重命名文件夹& Windows系统中的文件递归

时间:2011-11-13 05:56:29

标签: regex windows shell unix batch-file

我有以下文件夹结构:

Top Folder
    -> SubFolder1
        -> MyFolder_Latest
        -> MyFile_Latest.txt
    -> SubFolder2
        -> MyFolder_Latest
        -> MyFile_Latest.txt
    -> SubFolder3
        -> MyFolder_Latest
        -> MyFile_Latest.txt

我希望更改上面给出的不同子文件夹中的文件夹和文件。所有文件夹和文件都具有相同的名称,我希望更改为以下内容:

Top Folder
    -> SubFolder1
        -> myfolder
        -> myfile.txt
    -> SubFolder2
        -> myfolder
        -> myfile.txt
    -> SubFolder3
        -> myfolder
        -> myfile.txt

基本上做两件事: a)从所有文件和文件夹名称中删除_Latest。 b)将所有文件夹和文件的案例改为小写

有人知道如何在Windows中实现上述目标吗?我的系统不允许安装UNIX,我无法将这些文件复制到UNIX系统,因为我们的网络目前不在任何UNIX机器上提供SCP或FTP权限: - (

此外,如果有人在UNIX中有合适的解决方案,我可以尝试将文件夹复制到DVD并尝试在UNIX机器上运行命令: - )

1 个答案:

答案 0 :(得分:2)

显示的文件夹结构不需要递归。只需循环遍历结构第一级中的所有文件夹,并相应地重命名它们。

请参阅HELP FOR

试试这个让你入门

@echo off
set TopFolder="c:\temp\Top Folder"
pushd %TopFolder%
for /d %%a in (*.*) do (
  if exist "%%~fa\MyFolder_Latest" echo REN "%%~fa\MyFolder_Latest" myfolder
  if exist "%%~fa\MyFile_Latest.txt" echo REN "%%~fa\MyFile_Latest.txt" myfile.txt
)
popd

仔细测试后,删除ECHO命令。