簡體   English   中英

批處理文件:基於父子目錄重命名文件,接受空格和多次迭代

[英]Batch file : Renaming files based on parent subdir, accepting spaces and multiple iterations

我從該站點學到了很多東西,這是我的第一個問題……希望我進一步提高自己的技能后能夠回饋社區。 我已盡力進行了研究,但似乎無法解決我絆倒的地方。

我在一組子目錄中有許多文件,例如:

Newspaper A
|-Monday
  |-Paper 1.pdf
  |-Paper 2.pdf
|-Tuesday
  |-Paper 1.pdf
  |-Paper 2.pdf
|-Wednesday
  |-Paper 1.pdf
  |-Paper 2.pdf
 ... etc

我正在嘗試制作一個批處理文件以將文件重命名為具有代表其文件夾名稱的文件名,即生成的文件應為“ Monday-Newspaper A-Paper 1.pdf”。 即使每天僅更新一組文件(由於每天都會進行進一步處理),該批處理文件仍需要每天運行,因此需要檢查文件夾名是否已存在於文件名中,而不是重命名文件(如果確實如此)。 此刻,每次運行批處理文件時,它都會一次又一次地為文件夾名稱加上前綴,因此我懷疑這與findstr函數有關,也許不喜歡名稱中的空格嗎?

@echo off
for /d /r "C:\Test\Newspaper A\" %%D in (*.*) do (
   for /f "eol=: delims=" %%F in ('dir /b /a-d "%%D" ^| findstr /vbic:"%%~nD-"') do (
   ren "%%D\%%F" "%%~nD - Newspaper A - %%F"
   )
) 

任何想法或解決方案將不勝感激。

問候。

在一些示例文件夾/文件上對此進行測試:

@echo off
set "folder=C:\Test\Newspaper A"
for %%a in ("%folder%") do set "root=%%~nxa"
for /f "delims=" %%a in ('dir "%folder%\*.pdf" /s /b /a-d ^| findstr /vi /c:" - %root% - "') do (
   for %%b in ("%%~pa\.") do ren "%%a" "%%~nxb - %root% - %%~nxa"
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM