在cmd中,哪个符号是转义字符?

4

我有这段代码:

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

这是用于下载文件的代码。
当我在远程服务器上执行它时,一切都很好。
但是当我想要使用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') }""

我尝试使用^符号,但出现了相同的错误;
代码使用^符号表示双引号:

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') }^""

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

https://dev59.com/pWkv5IYBdhLWcg3w3Ug0 - Sterling Archer
我尝试过了,不起作用。 - via via
反引号是什么?另外,为什么可以直接调用PowerShell,还需要使用cmd /c - 4c74356b41
嗯,你说得对。我可以使用powershell.exe "mycommand"。我忘了它了。 - via via
3个回答

5

很遗憾,CMD使用的转义字符取决于转义的内容和位置。没有一个通用的转义字符可以在所有情况下使用。

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

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

但有时候字符会通过重复使用它们来进行转义,例如在批处理脚本中的百分号(%):

@echo off
echo %%DATE%%=%DATE%

有时,您甚至需要放入其他转义字符(如反斜杠),因为您需要对传递给字符串的命令进行转义,而不是针对CMD进行转义:
mountvol | findstr /r \\\\

您的特定情况不需要额外的引号或转义,直接运行PowerShell命令行即可,无需使用cmd /c
paexec.exe \\remoteServer.0.1 -u username -p password powershell -command "&{...}"

0

改为这样:

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') }""

做这个:

psexec.exe \\remoteServer.0.1 -u 'username' -p 'password' powershell.exe -Command "& {(New-Object System.Net.WebClient).DownloadFile('linkToMyFile.file', 'C:\my.file')}"

这应该能完成你的工作。

希望能有所帮助。


0

能否完全使用PowerShell?如果可以,您可以尝试以下操作:

New-PsDrive -Name X -Root \\127.0.0.1\c$ -PsProvider FileSystem -Credential (Get-Credential)
Copy-Item -Path X:\RequestedFile.txt -Destination C:\Temp
Remove-PsDrive -Name X

如果您的目标是一个http地址,您可以执行以下操作:
Invoke-WebRequest -Uri http://some.uri -Method Get -OutFile C:\temp\myfile -Credential (Get-Credential)

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接