Как переименовать и переместить файлы в новый каталог - PullRequest
0 голосов
/ 04 февраля 2012

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

Спасибо.

1 Ответ

2 голосов
/ 04 февраля 2012

Вот код

FOR  /R C:\your_folder %%d  IN  (*.txt)  DO  (
    ren %%d %%~nd.txt_mvd
)

%% d - полное имя файла + путь
%% ~ nd возвращает только имя файла без расширения
Используя параметр / R, он будет сканировать папку и подпапку

ОБНОВЛЕНИЕ 1

Следующий код должен работать как требуется.
Я добавил IF, который игнорирует подпапки.

FOR  /R E:\your_folder\ %%d  IN  (*.*)  DO  (
    IF %%~dpd==E:\your_folder\ (
        ren %%d %%~nd.txt_mvd
    )
)

ОБНОВЛЕНИЕ 2

Фиксированный код

FOR  /R E:\your_folder\ %%d  IN  (*.txt)  DO  (
    IF %%~dpd==E:\your_folder\ (
        ren %%d %%~nd.txt_mvd
    )
)

ОБНОВЛЕНИЕ 3
Вот более обобщенная и параметризованная версия сценария.
Измените начальный параметр в соответствии с вашими потребностями (первые 4 строки кода).
Этот сценарий сначала переименовывает выбранные вами файлы (1-й параметр) в вашей начальной папке (3-й параметр), изменяет расширение на новое (2-й параметр), а затем перемещает переименованные файлы в папку по вашему выбору (4-й параметр).

set Extension_of_file_you_want_to_renamne_and_move=txt
set New_extension_of_moved_files=txt_mvd

set Folder_that_contain_your_files=C:\Your_starting_folder\
set Folder_where_to_move_your_files=C:\Your_destnation_folder\

FOR  /R %Folder_that_contain_your_files% %%d  IN  (*.%Extension_of_file_you_want_to_renamne_and_move%)  DO  (
    IF %%~dpd==%Folder_that_contain_your_files% (
    IF %%~xd==.%Extension_of_file_you_want_to_renamne_and_move% (
        ren "%%~d" "%%~nd.%New_extension_of_moved_files%"
        move "%%~dpnd.%New_extension_of_moved_files%" "%Folder_where_to_move_your_files%"
        )
    )
)

при изменении параметра НЕ добавляйте пробел.
Поэтому НЕ меняйте параметр следующим образом:

set Folder_that_contain_your_files = c:\myFolder      <--- WRONG, WON'T WORK, there are unneeded space

вместо этого напишите параметр БЕЗ ненужного пробела:

set Folder_that_contain_your_files=c:\myFolder      <--- OK, THIS WILL WORK, there are no extra spaces

ОБНОВЛЕНИЕ 4
Исправил код, я добавил несколько кавычек, без них код не будет работать, если имя папки содержит пробелы.

set Extension_of_file_you_want_to_renamne_and_move=txt
set New_extension_of_moved_files=txt_mvd

set Folder_that_contain_your_files=C:\Your_starting_folder\
set Folder_where_to_move_your_files=C:\Your_destnation_folder\

FOR  /R "%Folder_that_contain_your_files%" %%d  IN  (*.%Extension_of_file_you_want_to_renamne_and_move%)  DO  (
    IF "%%~dpd"=="%Folder_that_contain_your_files%" (
    IF %%~xd==.%Extension_of_file_you_want_to_renamne_and_move% (
        ren "%%~d" "%%~nd.%New_extension_of_moved_files%"
        move "%%~dpnd.%New_extension_of_moved_files%" "%Folder_where_to_move_your_files%"
        )
    )
)
...