2015-04-13 2 views
0

Как вы обрезаете дату из текстового файла. Например, у меня есть несколько файлов, таких как:Trim Дата от имени файла windows script

  • test_MX_abc_20091011.txt

  • test_MX_pqrdhdsu_20091011.txt

  • test_MX_xyieuz_20091011.txt

Все файлы будут иметь test_MX общего, но 3-я часть будет разного размера.

Я хотел бы изменить в:

  • test_MX_abc.txt
  • test_MX_pqrdhdsu.txt
  • test_MX_xyieuz.txt

Я знаю, как изменить файл, если имя как test_20091011 .txt с приведенным ниже кодом, но если имя имеет больше строк вместе с датой, как это сделать?

for /F "tokens=1 delims=_" %%i in ("%%~na") do (
    move /Y %%~fa %data_in%\%%i%%~xa >nul 
) 

Заранее спасибо.

ответ

0

Эта операция переименования может быть сделано, например, с:

@echo off 
for /F "tokens=1-3* delims=_" %%A in ('dir /A-D /B test_MX_*.txt') do (
    ren "%%A_%%B_%%C_%%D" "%%A_%%B_%%C.txt" 
) 

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

Или также работает на 3-х файлов:

@echo off 
setlocal EnableDelayedExpansion 
for /F "delims=" %%F in ('dir /A-D /B test_MX_*.txt') do (
    set "ActFileName=%%~nF" 
    set "NewFileName=!ActFileName:~0,-9!" 
    ren "%%~F" "!NewFileName!.txt" 
) 
endlocal 

Это решение присваивает имя файла без расширения файла и путь к переменной окружения ActFileName. Затем новая переменная среды с именем NewFileName определяется с именем активного файла без последних 9 символов (символ подчеркивания и даты). Это измененное имя файла используется далее в операции переименования.

Другие решения с использованием команд для, установить и Ren можно найти на переполнение стека.
Поиск со строкой

[batch-file] for set rename files 

и более 600 результатов представлены все с помощью более или менее что-то вроде выше.

Для получения дополнительной информации об используемых командах откройте окно командной строки, выполните одно за другим следующие команды и прочитайте справку о выходе.

  • dir /?
  • for /?
  • ren /?
  • set /?
+0

с командой жэнь мне нужно сделать это один раз для каждого файла. Ниже я могу это сделать, но это ограничивает первую строку. для/F "tokens = 1 delims = _" %% i in ("%% ~ na") do ( move/Y %% ~ fa% data_in% \ %% i %% ~ xa> nul ) – user3123752

+0

Спасибо Mofi за ваши комментарии. Я добавил больше подробностей в мой вопрос. – user3123752

Смежные вопросы