簡體   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