2013-11-26 36 views
1

我有一個批處理文件寫入另一個批處理文件,以便以後從其他系統恢復文件。 %userprofile%被當前正在運行的批處理解釋。所以當我檢查它創建的批處理時,它會填充之前運行它的用戶。將%userprofile%傳遞給另一批次

例子:

echo XCOPY "%%~dp0User files\Desktop\*.*" "%userprofile%\Desktop\Old Desktop shortcuts" /C /S /Y /I >> "!D!:\Backup-%computername%-%date:~-10,2%-%date:~7,2%-%date:~-4,4%\Restore_User_Files.bat" 

它創建了一個Restore_User_files.bat,當我打開它在另一個系統上它顯示:

XCOPY "%%~dp0User files\Desktop\*.*" "C:\Documents and Settings\randomness\Desktop\Old Desktop shortcuts" 

我想那%userprofile%進入批量不變,而不是系統的用戶名稱,因此另一個系統可以將其解釋爲%userprofile%

有什麼建議嗎?我確定我只是缺少一些字符......如果我沒有理智讓我知道=)

回答

3

雙百分號。

%%userprofile%% 
+0

我想我可能已經嘗試過,但我會給它一個鏡頭。感謝您的快速響應。 – user3038018

+0

工作正常!謝謝 – user3038018

0

你需要在你的命令中用^字符轉義%符號。在這種情況下,^%USERPROFILE^%應該做你想做的。

+1

這將無法在批處理文件中工作 - 百分比需要翻倍,如在foxidrive的答案。你的解決方案可以從命令行工作,但它並不真正逃脫百分比。脫字符可以放在百分號之間的任何位置,通常可以從命令行運行。 – dbenham

+0

啊哈,很好。給予好評。 – Mark

+0

@Mark謝謝馬克。你可以考慮在你認爲它沒有什麼價值的情況下刪除你的答案,以便爲未來的讀者提供更清晰的線索。 – foxidrive