在部署配置包期间无法将文件复制到系统驱动器

在部署配置包期间无法将文件复制到系统驱动器

我尝试了几种不同的方法将一些文件从配置包复制到系统驱动器。在批处理文件尝试中,它确实按预期创建了日志文件,这意味着我知道它可以访问 %SystemDrive%。我做错了什么?或者还有其他方法可以复制文件吗?

我尝试过的方法:

  1. PrimaryContext 命令

    CommandFile: c:\deploymentfiles\test.bat
    CommandLine: cmd /c test.bat
    
  2. 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%
    
  3. 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

相关内容