我想将上传到另一台服务器的文件从扩展名.txt重命名为.txt_mvd,然后移动到另一个目录以便在Windows批处理模式下进行存档。任何人都可以帮助Windows批处理脚本应该是什么?
感谢。
答案 0 :(得分:2)
这是代码
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行代码)
此脚本首先重命名您在起始文件夹中选择的文件(第一个参数)(第三个参数),将扩展名更改为新的(第二个参数),然后将重命名的文件移动到您选择的文件夹中(第四个参数)。
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
而是编写参数WITHOUT withouteded 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%"
)
)
)