2017-02-03 35 views
0

我有這樣的代碼:哪個符號是cmd中的轉義字符?

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

它是下載文件。
當我在遠程服務器上的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') }"" 

我嘗試使用^符號,但同樣的錯誤;使用^符號雙引號
代碼:

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)逃生,但有同樣的結果。
幫助,或給我建議如何使用命令行遠程下載文件。

+0

http://stackoverflow.com/questions/10296162/escaping-special-characters-in-cmd –

+0

我試過這個。不要工作。 –

+0

反襯?另外,當你可以直接調用powershell時,爲什麼要執行'cmd/c'? – 4c74356b41

回答

1

不幸的是,CMD使用different escape characters,這取決於什麼是轉義和在哪裏。沒有任何一個轉義字符可以在任何地方使用。

在大多數情況下,下一個字符通過在其前面加上一個插入符號(^)(例如,在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

是否可以使用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) 

希望幫助

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

這應該做你的工作。

希望它有幫助。