Ao fazer isso dentro de um test.bat
arquivo:
for %%i in (__src\*.js) do jsmin <"%%i" >"temp\%%~ni%%~xi" "(C) Example"
Eu esperava ver:
D:\Temp>jsmin <"__src\background.js" >"temp\background.js" "(C) Example"
mas vejo isso:
D:\Temp>jsmin "(C) Example" 0<"__src\background.js" 1>"temp\background.js"
Por que essa ordem errada e <
substituída por 0<
, >
substituída por 1>
?
Como obter a ordem normal? (como desejado por jsmin )
jsmin <fulljslint.js >jslint.js "(c)2002 Douglas Crockford"
command-line
batch
pipe
Basj
fonte
fonte
0<
=<
e1>
=>
). É assim que os comandos são repetidos após a expansão.for %%i in (__src\*.js) do echo jsmin ^<"%%i" ^>"temp\%%~ni%%~xi" "(C) Example"
e a ordem está correta sem os dígitos prefixados. Caso contrário, você pode precisarsetlocal enabledelayedexpasion
definir os valores substituídos como variáveis e, em seguida, colocar essas variáveis nos comandos com o mesmo!varnames!
tipo. Se você está apenas ecoando, foi assim que resolvi adicionando os símbolos de sinal de intercalação, mas acho que você está tentando redirecionar com o comando jsmin e não preciso fazer o teste para confirmar para você no momento.for %%i in (__src\*.js) do jsmin ^<"%%i" ^>"temp\%%~ni%%~xi" "(C) Example"
, mas ele não funcionaRespostas:
Não acredito, mas o problema era apenas a nova linha. Com isso
test.bat
, ele não funciona corretamente (a cadeia de direitos autorais não é incluída como o jsmin deve fazê-lo e a primeira linha do arquivo JS de saída está vazia):Mas com isso
test.bat
, funciona:fonte