我尝试了几种不同的方法将一些文件从配置包复制到系统驱动器。在批处理文件尝试中,它确实按预期创建了日志文件,这意味着我知道它可以访问 %SystemDrive%。我做错了什么?或者还有其他方法可以复制文件吗?
我尝试过的方法:
PrimaryContext 命令
CommandFile: c:\deploymentfiles\test.bat CommandLine: cmd /c test.bat
DeviceContext 命令
CommandFile: c:\deploymentfiles\test.bat CommandLine: cmd /c test.bat
测试脚本
@echo off set LOGFILE=%SystemDrive%\logs\provisiontest.log mkdir c:\logs >NUL 2>&1 copy test.txt %SystemDrive% >NUL 2>&1 echo Copy result: %ERRORLEVEL% >> %LOGFILE%
PrimaryContext 命令
CommandFile: c:\deploymentfiles\test.txt CommandLine: copy test.txt %SystemDrive%
答案1
您指定了吗CommandFile: c:\deploymentfiles\test.txt
?您的问题中只显示了 .bat。
无论哪种方式,copy test.txt C:
没有尾部斜杠\
实际上都会将文件复制到当前工作目录这是因为 CMD 扩展驱动器号的方式很奇怪。copy test.txt "%systemdrive%\"
如果您确实需要将某些内容转储到驱动器的根目录中,请使用(如果可能,我建议改用%temp%
或其他任何方式)。
最后要注意的是,如果你>> %LOGFILE% 2>&1
在复制命令中使用而不是>NUL 2>&1
,那么你的日志文件实际上会显示错误
答案2
发布此内容以供参考。下面的代码有效。Cpt.Whale 接受的答案让我想到了这一点。
命令文件:
test: c:\wherever\scripts\are\stored\test.txt
命令行:
cmd /c test.bat
测试脚本
@echo off set LOGFILE=%SystemDrive%\Company\logs\provisiontest.log mkdir %SystemDrive%\Company>NUL 2>&1 mkdir %SystemDrive%\Company\logs >NUL 2>&1 mkdir %SystemDrive%\Company\scripts >> %LOGFILE% 2>&1 dir >> %LOGFILE% copy test.txt %SystemDrive%\Company\scripts\ >> %LOGFILE% echo Copy result: %ERRORLEVEL% >> %LOGFILE%
另外,该dir
命令显示脚本是从c:\Windows\System32\config\systemprofile\appdata\local\temp\provisioningpkgTmp\{guid}\Commands