2013-09-09 8 views
0

Что я пытаюсь сделать, это взять несколько файлов и удалить ненужные данные из имени файла. Хорошо, что есть все тот же формат, используя «_» в качестве разделителя в имени. Формат выглядит так: Report_16666_2023_01.csv. То, что мне нужно, это данные с двумя разделителями, остальные могут быть удалены, поэтому файл будет выглядеть так: 16666.csv. Любая помощь будет большой. Я хотел бы лучше понять, как это работает, и любые сайты, на которые вы можете отправить мне ссылки, чтобы я мог узнать больше, было бы здорово.изменить имя файла с помощью .bat-файла

+0

Добро пожаловать на Stack Overflow. Мы ожидаем каких-либо усилий, прежде чем задавать вопрос; по причинам, лежащим в основе: «Вопросы, требующие кода, должны демонстрировать минимальное понимание проблемы, которая должна быть решена. Включите попытки решения, почему они не работают и ожидаемые результаты». Вам нужно что-то предпринять, и если вы застряли, возвращайтесь с вопросом. Кроме того, запросы на ссылки также неактуальны, потому что «[q] uestions, предлагающие нам рекомендовать или находить инструмент, библиотеку или ** любимый ресурс вне сайта **, не относятся к теме для переполнения стека, поскольку они, как правило, привлекают самоуверенных ответов и спама ». – LittleBobbyTables

+0

Пожалуйста, задайте правильный вопрос. Пройдите правила и правила – Anobik

ответ

0

Очень похоже на ответ Рене, но только переименовывает файлы, которые соответствуют *_*_*_*.csv.

for %F in (*_*_*_*.csv) do @for /f "tokens=2 eol=_ delims=_" %N in ("%F") do @ren "%F" "%N.csv" 

Удвоение все проценты, как показано ниже, чтобы использовать в пакетном файле:

@echo off 
for %%F in (*_*_*_*.csv) do for /f "tokens=2 eol=_ delims=_" %%N in ("%%F") do @ren "%%F" "%%N.csv" 
+0

Я поместил это в файл под названием trim.bat в папку с одним из файлов csv, и он просто вспыхнул на экране, я попытался изменить ren на эхо и то же самое. Я, очевидно, что-то пропустил. Я подумал, может быть, это было то, что мне нужно было @echo наверху, но это тоже не сработало. Я пошел на этот сайт, чтобы лучше понять, как это работает. http://www.robvanderwoude.com/battech.php – fulltiltphil

+0

@fulltiltphil - Ой, я забыл '*', все исправленные теперь – dbenham

+0

, которые работают из командной строки. Итак, теперь я попытаюсь заставить его работать из .bat-файла – fulltiltphil

0

Из командной строки это будет работать ...

for /f "delims=_ tokens=1-2,*" %a in ('dir *.csv /b') do ren "%a_%b_%c" "%b.csv" 

замените команду ren с echo если что-то не работает, и вам нужно отладить.

Для лучшего понимания того, как все работает: введите HELP в командной строке, чтобы просмотреть все доступные команды. Все команды поддерживают /? как параметр, чтобы объяснить, что делает команда. Если вы выберете for \?, вы найдете, что/f делает и как работают параметры. dir \? покажет, почему я использовал /b