cmd中哪个符号是转义符?

via*_*via 4 powershell command-line cmd

我有这个代码:

powershell -command "& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }"
Run Code Online (Sandbox Code Playgroud)

它用于下载文件。
当我在远程服务器上的 cmd 中执行它时 - 一切正常。
但是,当我想使用 paexec 从我的计算机在远程服务器上执行此代码时,我在转义字符方面遇到了一些麻烦。
我的 CMD 中的命令:

psexec.exe \\remoteServer.0.1 -u username -p password -dbg -lo D:\PsExec.log cmd /c "powershell -command "& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }""
Run Code Online (Sandbox Code Playgroud)

我尝试使用^符号,但同样的错误;
使用 ^ 符号作为双引号的代码:

psexec.exe \\remoteServer.0.1 -u username -p password -dbg -lo D:\PsExec.log cmd /c "powershell -command ^"& { (New-Object Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file') }^""
Run Code Online (Sandbox Code Playgroud)

另外,我尝试使用\(就像在 PHP 中一样)进行转义,但得到了相同的结果。
帮助解决此问题或提供如何使用命令行远程下载文件的建议。

Ans*_*ers 5

不幸的是,CMD根据转义的内容和位置使用不同的转义字符。没有一个转义字符可以在任何地方使用。

在大多数情况下,下一个字符通过在其前面添加插入符号 ( ^) 来转义,例如在for /f循环中:

for /f "tokens=1" %%a in ('type file.txt ^| find "something"') do ...
Run Code Online (Sandbox Code Playgroud)

但有时字符会通过加倍来转义,例如%批处理脚本中的百分号字符 ( ):

@echo off
echo %%DATE%%=%DATE%
Run Code Online (Sandbox Code Playgroud)

有时您甚至可能需要输入其他转义字符(如反斜杠),因为您需要转义某些内容,不是为了 CMD,而是为了传递字符串的命令:

mountvol | findstr /r \\\\
Run Code Online (Sandbox Code Playgroud)

不过,您的特定场景不应需要额外的引号或转义。只需直接运行 PowerShell 命令行,无需cmd /c

paexec.exe \\remoteServer.0.1 -u username -p password powershell -command "&{...}"
Run Code Online (Sandbox Code Playgroud)