以下代码在代码中为\C$\temp
的两个反斜杠提供了无法识别的转义序列错误。
我尝试使用双\\
和""
,但仍然无法正常工作。
代码+ txtWSName.Text +
用于作为计算机名称的变量。
txtFileDetails.Text = RunScript(@"Get-ChildItem \\ " + txtWSName.Text + " \C$\temp | Sort-Object -Property LastWriteTime -Descending");
我要做的是导航到目录并查看文件。
答案 0 :(得分:0)
如有疑问,请阅读documentation:
C#支持两种形式的字符串文字:常规字符串文字和逐字字符串文字。
常规字符串文字由用双引号括起来的零个或多个字符组成,如" hello",并且可能包括简单的转义序列(例如用于制表符的\ t)和十六进制和Unicode逃逸序列。
逐字字符串文字由@字符后跟双引号字符,零个或多个字符以及结束双引号字符组成。一个简单的例子是@"你好"。在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是quote-escape-sequence。特别是,简单的转义序列和十六进制和Unicode转义序列不会在逐字字符串文字中处理。逐字字符串文字可能跨越多行。
您需要字符串文字中的文字反斜杠。这意味着你必须要逃避它们,或者在字符串前加上@
字符(就像你对第一个文字一样):
@"Get-ChildItem \\ " + txtWSName.Text + @" \C$\temp ..."
或
"Get-ChildItem \\\\ " + txtWSName.Text + " \\C$\\temp ..."
除此之外,您需要从第一个字符串文字中删除尾随空格,从第二个字符串文字中删除前导空格,否则您将以无效路径结束。
底线,改变这个:
txtFileDetails.Text = RunScript(@"Get-ChildItem \\" + txtWSName.Text + " \C$\temp | Sort-Object -Property LastWriteTime -Descending");
进入这个:
txtFileDetails.Text = RunScript(@"Get-ChildItem \\" + txtWSName.Text + @"\C$\temp | Sort-Object -Property LastWriteTime -Descending");
答案 1 :(得分:0)
<?php
/**
* [PHPFOX_HEADER]
*
* @copyright [PHPFOX_COPYRIGHT]
* @author natio
* @package PhpFox
* @version $Id: cdn.sett.php.new 3956 2012-03-01 12:28:26Z Raymond_Benc $
*/
defined('PHPFOX') or exit('NO DICE!');
$aServers = array(
array(
'upload' => 'http://1.mydomain.com/',
'file' => 'http://1.mydomain.com/file/',
'key' => '123'
),
array(
'upload' => 'http://2.mydomain.com/',
'file' => 'http://2.mydomain.com/file/',
'key' => '1234'
)
);
?>
中有一个空格,这意味着@"Get-ChildItem \\ "
被视为一个单独的参数。您在\\
中有另一个空格,顺便说一下,它将" \C$\temp"
视为转义字符。
通常,您应该在单独的行中构造要执行的字符串,以便更轻松地进行调试。执行结果也是如此。性能不会受到影响。
你应该尝试:
\
在C#6中,您可以使用字符串插值,使代码更清晰,避免生成临时字符串,例如:
var path = @"\\" + txtWSName.Text + @"\C$\temp";
var script = "Get-ChildItem " + path +
" | sort-Object -property LastWriteTime -Descending";
var result = RunScript(script);
txtFileDetails.Text = result;