Странное поведение, как Forfiles относятся к шведскому - PullRequest
0 голосов
/ 05 февраля 2019

Forfiles со шведскими символами не работают без излишеств ...

Я использую шведский компьютер, а Forfiles очень странно относятся к шведским символам.Это может относиться к одному инстансу правильно, а в следующем - глупо.Я долгое время боролся с этой проблемой, и я думаю, что нашел решение, и мой опыт (нет) подсказывает мне, что это разные операции в файлах файлов, которые усложняют его.

Я должен использоватьCHCP 65001 в моем командном файле, чтобы он работал.Все forfiles работают с этой кодовой страницей, кроме CALL.Тогда он попадает в беду.

Тогда я решил изменить только эту часть на CHCP 1252.Не сработало идеально, но когда я взял все это и направил в файл «некоторый textfile.txt», вдруг все заработало.Теперь я могу использовать шведские символы в foldernames.

Похоже, что аргументу CALL для работы нужна специальная кодовая страница, но его использование в остальной части кода не удастся ...

У меня есть один вопрос: почему он ведёт себя так странно и зачем мне нужно ставить >myfile.txt в конце, чтобы он работал?

`CHCP 65001

forfiles /S /m * /c "cmd /c if @isdir==TRUE COPY myfile.bat @path"`

(Этоработает, даже если в папках есть шведские символы (åäö), но не будет работать с кодовой страницей 1252. Myfile.bat помещается в каждую папку и создает html-страницу содержимого папок, когда вызывается ниже).

`CHCP 1252

forfiles /S /m "myfile.bat" /c "cmd /c CALL @path" >> some textfile.txt`

(Это не удастся при использовании кодовой страницы 65001, но прекрасно работает с кодовой страницей 1252. Для этого потребуется некоторый текстовый файл,>> без него. Сбои страниц в каждой папке.)

DEL some textfile.txt

(файл удален, так как он просто мусор (странно, что мне нужен этот файл))

CHCP 65001

(Перейдите обратно на кодовую страницу 65001, чтобы все остальное работало. Ниже приведен код, создающий ссылкувозраст каждой найденной папки и одинаковый на каждой создаваемой странице.)

forfiles /S /m * /c "cmd /c if @isdir==TRUE ECHO @path" >>anotherfile.txt

(Спасибо за все ваши ответы.Я восстановлю его сейчас, когда узнаю немного больше.Маленькие степи, маленькие степи ...)

...