У меня есть более 80 файлов .csv с уникальными именами, из которых мне нужно удалить первые 17 строк. Я новичок в написании пакетных сценариев, но хотел бы использовать эту возможность для обучения.
Мне удалось заставить этот пример кода работать для одного файла, когда я переименовал файл в test.csv, но было бы предпочтительнее, если бы для имени файла был «подстановочный знак», который я мог бы использовать.
@echo off
set "csv=test.csv"
more +17 "%csv%" >"%csv%.new"
move /y "%csv%.new" "%csv%" >nul
Сам файл обновляется, чтобы НЕ иметь первых 17 строк, и переименовывается при запуске.
Добро пожаловать в StackOverFlow. Пожалуйста, возьмите Тур. Прочтите, Как задать хороший вопрос?. Также прочитайте Как создать минимальный, полный и проверяемый пример
попробуйте так:
@echo off
for %%a in (*.csv) do (
more +17 "%%a" >"%%a.new"
move /y "%%a.new" "%%a" >nul
)
При тестировании обоих этих предложений я обнаружил, что оба процесса зависают, когда файл превышает 65 534 строки данных? Мне представляют -- Больше (29%) --
Вот пример, основанный на выводе For /?
, упомянутом в моем комментарии.
Этот работает непосредственно в командной строке:
For %A In (*.csv)Do @More +17 "%A">"%A.new"&&Move /Y "%A.new" "%A">Nul
И это версия пакетного файла:
@For %%A In (*.csv)Do @More +17 "%%A">"%%A.new"&&Move /Y "%%A.new" "%%A">Nul
Приведенная выше команда почти идентична другому предоставленному ответу. Единственная «реальная» разница заключается в использовании условного оператора &&
, который должен запускать команду Move
только в том случае, если предыдущая команда More
выполнена успешно. Хотя маловероятно, что команда More
завершится ошибкой, я бы все же предложил реализовать безопасность условного оператора. Если вы считаете, что вам не нужна эта дополнительная функция, смело выбирайте ответ СашаДи (если он решит вашу проблему).
Я следовал вашим первоначальным указаниям и изо всех сил пытался правильно построить синтаксис. Меня выбрасывало в помощь /D /F после for. Спасибо за это второе решение, поскольку оно сработало как шарм.
Оба стиля отлично работают, если файл не превышает 65534 строк. Потом просто сидит и дальше не идет?
Проблема с размером файла связана с командами More
и Move
, а также с методом, который вы выбрали и использовали. На ваш вопрос, как он был задан, ответили, ваша проблема выходит за рамки вашего вопроса и, как таковая, должна быть задана как новый вопрос.
Откройте окно командной строки, введите
for /?
и прочитайте информацию об использовании.