Прежде всего, вы используете for /f
для чего-то, что достаточно только for
. Во-вторых, я не рекомендую делать это рекурсивно, поскольку вы явно помещаете мини-сценарии в подпапку того же дерева.
for %x in (*.js) do jsmin <"%x" >"min\%~nx-min.js"
(из командной строки, а не из пакета) делает то, что должен для меня здесь. То, что вы видите с 0<
и 1>
, действительно правильно, так как 0 - стандартный поток ввода, а 1 - стандартный поток вывода, который вы оба перенаправляете.
За то, что я сделал это рекурсивно, следующая строка сделала мне трюк:
for /r %x in (*.js) do jsmin <"%x" >"%~dpx\min\%~nx-min.js"
ETA: Хорошо, я проверил, метод dir
работает на самом деле более надежно, чем использование for /r
. Приношу извинения. Из командного файла у меня работало следующее:
for /f "usebackq delims=" %%x in (`dir /s /b *.js`) do jsmin <"%%x" >"%%~dpx\min\%%~nx-min.js"
for /f
всегда делает токенизацию, обычно только на основе пробелов. Но в папке моего профиля уже есть пробелы, поэтому лучше вообще отключить токенизацию.