Windows批处理脚本在包含子文件夹并复制到root后命名文件

时间:2013-06-24 01:19:30

标签: windows batch-file file-rename batch-rename

考虑以下文件夹结构:

root
  Folder1
    file1.txt
    file2.dat
  Folder2
    file3.doc
    file4.pdf
  rename.bat

我想根据各个子目录的名称重命名文件(使用rename.bat),将它们复制到根目录并删除子文件夹以便我得到

root
  Folder1.txt
  Folder1.dat
  Folder2.doc
  Folder2.pdf
  rename.bat

实际上我知道这是可能的(实际上只有很少的代码行),因为我已经在某个地方找到了代码。可悲的是,我丢失了我的scipt,现在无法再找到代码。

此致 爱德华

3 个答案:

答案 0 :(得分:0)

我在这里实现了自己。我为你创造了一个类似的情况,它对我来说很好。但是,您必须指定将所有文件复制到的位置。

for /d %%a in (*) do (
cd %%a
for /r %%b in (*) do (
copy %%b C:\ [root] \%%a%%~xb
)
cd..
)
pause

希望这会有所帮助。

你的莫娜。

答案 1 :(得分:0)

这使用Mona的代码,但处理长文件名。在一些示例文件夹上测试它。

将其称为renfolder.bat或其他内容,因为rename.bat使用内部命令的名称。

@echo off
for /d %%a in (*) do (
cd "%%a"
for %%b in (*) do (
echo copying "%%a%%~xb"
copy "%%b" "\%%a%%~xb" >nul
)
cd..
rd "%%a"
)
pause

答案 2 :(得分:0)

感谢您的回答!

我改进了您的代码以按预期工作,因此它完全符合我的需求:

@echo off
for /d %%a in (*) do (
  cd "%%a"
  for %%b in (*) do (
    echo moving "%%a\%%b" to "%%a%%~xb"
    move "%%b" "..\%%a%%~xb"
  )
  cd ..
  rd "%%a"
)