繁体   English   中英

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

[英]Windows batch script to name files after containing subfolder and copy to root

考虑以下文件夹结构:

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

实际上,我知道这是可能的(并且实际上只有很少的几行代码),因为我早在某个地方已经找到了代码。 遗憾的是,我失去了密码,现在无法再次找到代码。

问候,爱德华

我在这里做了我自己。 我创建了一种与您类似的情况,对我来说效果很好。 但是,您必须指定要将所有文件复制到的位置。

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

希望这会有所帮助。

莫娜

这使用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

感谢您的回答!

我对您的代码进行了改进,使其可以按预期工作,因此现在非常适合我的需求:

@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"
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM