Używanie> i <wewnątrz pliku wsadowego, z pętlą for

1

Robiąc to w środku test.bat plik:

for %%i in (__src\*.js) do jsmin <"%%i" >"temp\%%~ni%%~xi" "(C) Example"

Spodziewałem się zobaczyć:

D:\Temp>jsmin <"__src\background.js" >"temp\background.js" "(C) Example"

ale widzę to zamiast tego:

D:\Temp>jsmin  "(C) Example" 0<"__src\background.js" 1>"temp\background.js"

Dlaczego ten zły porządek i < zastąpione przez 0< , > zastąpione przez 1>?

Jak zamiast tego uzyskać normalne zamówienie? (jak chciał jsmin )

jsmin <fulljslint.js >jslint.js "(c)2002 Douglas Crockford"
Basj
źródło
1
Kolejność i pozycja przekierowań jest nieistotna i nieznana uruchomionemu programowi. Poprzednie cyfry podkreślają przekierowane ścieżki, ale nie mają żadnego efektu ( 0< = < i 1> = > ). Jest to po prostu sposób, w jaki polecenia są powtarzane po rozwinięciu.
AFH
Tak, ale nadal sprawia, że ​​jsmin zawodzi przy złej kolejności ...
Basj
@Basj Jeśli wykonujesz echo, spróbuj for %%i in (__src\*.js) do echo jsmin ^<"%%i" ^>"temp\%%~ni%%~xi" "(C) Example" a zamówienie jest poprawne bez poprzedzonych cyfr. W przeciwnym razie może być konieczne setlocal enabledelayedexpasion i ustaw podstawione wartości jako zmienne, a następnie umieść te zmienne w poleceniach za pomocą !varnames! może tak. Jeśli jednak po prostu odbijasz echo, tak właśnie to rozwiązałem, dodając symbole karetki, ale myślę, że próbujesz przekierować za pomocą komendy jsmin i nie mam tego do przetestowania, aby potwierdzić to w tej chwili.
Pimp Juice IT
Uruchomiony program nie wie, gdzie w łańcuchu uruchamiania są stosowane przekierowania: widzi tylko parametry. Gdy polecenie jest włączone, każde przekierowanie w pliku wsadowym jest wyświetlane w ten sposób.
AFH
@PimpJuiceIT Próbowałem z for %%i in (__src\*.js) do jsmin ^<"%%i" ^>"temp\%%~ni%%~xi" "(C) Example" ale to nie działa
Basj

Odpowiedzi:

1

Nie mogę w to uwierzyć, ale problemem była tylko nowa linia. Z tym test.bat, to nie działa poprawnie (ciąg praw autorskich nie jest dodany jak jsmin powinien to zrobić, a pierwszy wiersz wyjściowego pliku JS jest pusty):

for %%i in (__src\*.js) do jsmin <"%%i" >"temp\%%~ni%%~xi" "(C) Example"

Ale z tym test.bat, to działa:

for %%i in (__src\*.js) do jsmin <"%%i" >"temp\%%~ni%%~xi" "(C) Example"
+ (empty line here)
Basj
źródło