Batch file 将%userprofile%传递到另一批中

Batch file 将%userprofile%传递到另一批中,batch-file,Batch File,我有一个批处理文件,它写入另一个批处理文件,以便以后从另一个系统恢复文件。%userprofile%由当前运行的批处理进行解释。因此,当我检查它创建的批时,它会填充以前运行它的用户 例如: echo XCOPY "%%~dp0User files\Desktop\*.*" "%userprofile%\Desktop\Old Desktop shortcuts" /C /S /Y /I >> "!D!:\Backup-%computername%-%date:~-10,2%-%dat

我有一个批处理文件,它写入另一个批处理文件,以便以后从另一个系统恢复文件。
%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%


有什么建议吗?我确定我只是缺少了一些字符……如果我说的不太清楚,请告诉我=)

您需要使用^characters来转义命令中的%符号。在这种情况下,
^%USERPROFILE^%
应该执行您想要的操作。

将百分号加倍

%%userprofile%%

这在批处理文件中不起作用-百分比需要加倍,如foxidrive的回答所示。您的解决方案可以从命令行运行,但它并没有真正逃脱百分比。插入符号可以放在百分比之间的任何位置,通常可以从命令行使用。@Mark谢谢Mark。你可以考虑删除你的答案,所以当你认为它没有什么价值的时候,把线索放在对未来读者更清楚、更清楚的地方。我想我可能已经尝试过了,但我会尝试一下。谢谢你的迅速回复。