Tentei alguns métodos diferentes para copiar alguns arquivos do pacote de provisionamento para a unidade do sistema. Nas tentativas de arquivos em lote, ele criou o arquivo de log conforme esperado, o que significa que sei que ele tem acesso ao% SystemDrive%. O que estou fazendo de errado? Ou existe alguma outra maneira de copiar arquivos?
Métodos que tentei:
Comando PrimaryContext
CommandFile: c:\deploymentfiles\test.bat CommandLine: cmd /c test.bat
Comando DeviceContext
CommandFile: c:\deploymentfiles\test.bat CommandLine: cmd /c test.bat
teste.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%
Comando PrimaryContext
CommandFile: c:\deploymentfiles\test.txt CommandLine: copy test.txt %SystemDrive%
Você especificou
CommandFile: c:\deploymentfiles\test.txt
? Você mostra apenas o .bat na sua pergunta.De qualquer forma,
copy test.txt C:
sem uma barra final,\
o arquivo será copiado para o diretório de trabalho atual devido à maneira estranha do CMD de expandir as letras das unidades. Usecopy test.txt "%systemdrive%\"
em vez disso se você realmente precisar despejar algo na raiz da unidade (se possível, eu recomendo usar%temp%
ou qualquer outra coisa).E uma observação final: se você usar
>> %LOGFILE% 2>&1
o comando de cópia em vez de>NUL 2>&1
, seu arquivo de log realmente mostrará os errosPostando isso para referência. O código abaixo funciona. A resposta aceita do Cpt.Whale me levou a isso.
Arquivos de comando:
Linha de comando:
Além disso, o
dir
comando mostra que o script é executado a partir dec:\Windows\System32\config\systemprofile\appdata\local\temp\provisioningpkgTmp\{guid}\Commands