Слишком много аргументов в командной строке - команда «больше» - PullRequest
0 голосов
/ 01 марта 2019

У меня странная проблема с командным файлом, который объединяет несколько файлов CSV в один. Этот - это файл, который я использую.

Он возьмет только один из CSV-файлов кратных в каталоге и скопирует его содержимое в новый файл .csv.Затем он возвращает «Слишком много аргументов в командной строке» для каждого из оставшихся файлов в каталоге.

Этот файл прекрасно работает в других системах с той же операционной системой.

Он работал намоя система, пока я не запустил его и не удалил выходной файл первым.Это привело к тому, что new.csv.tmp был создан в каталоге, а не в окончательном «new.csv», так как он не мог переименовать его.

Кто-нибудь знает, что произошло?Я попытался перезапустить, удалить все и начать с нуля.Похоже, что в этой конкретной системе он не работает.

Некоторые поиски обнаружили, что команда more может быть ошибочной. Этот вопрос похож .

1 Ответ

0 голосов
/ 02 марта 2019

Раньше у меня возникала проблема, похожая на эту.

Напомню, что использованный мною метод, который, казалось, разрешил его, заключался в использовании фактического синтаксиса из справки команды (примечаниеперенаправление STDIN) :

MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename

Примерно так:

@If Not Exist *.csv Exit /B
@Set "_=1"&(For /F Delims^=^ EOL^= %%A In ('Where/F .:*.csv')Do @If Defined _ (
    More<%%A&Set "_=")Else More +1<%%A)>"new.tmp"&Ren "new.tmp" "new.csv"

В качестве альтернативы вы можете попробовать другой показанный синтаксис, (Вы, кажется, используетеэтот синтаксис, но без опции /E) :

MORE /E [/C] [/P] [/S] [/Tn] [+n] [files]

Как это:

@If Not Exist *.csv Exit /B
@Set "_=1"&(For /F Delims^=^ EOL^= %%A In ('Where/F .:*.csv')Do @If Defined _ (
    More /E %%A&Set "_=")Else More /E +1 %%A)>"new.tmp"&Ren "new.tmp" "new.csv"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...