如何根據文件名稱將文件移動到資料夾?

如何根據文件名稱將文件移動到資料夾?

我在某個資料夾「ABC」中有幾個 .pdf 和 .tex 檔案。

它們都是由方案命名的

C01S02_Word.pdf
C03S02SS01_Description_random_words.pdf
C04S01SS02_More_words.pdf
and so forth

C在這個方案中代表章節,S對於部分和SS對於小節。所以在資料夾 ABC 中我也有每個章節的資料夾,簡單地命名為C01,二氧化碳等等。在每一章資料夾中,我都有一個名為圖片

有人可以編寫一個批次腳本,以便我可以將所有 .tex 和 .pdf 檔案移動到各自的位置圖片- 資料夾,C04S01SS02_More_words.pdf會被移至C04/PicturesC01S02_Word.pdf移至C01/Pictures等等嗎?

筆記:當然我已經用谷歌搜尋過了但到目前為止,我無法將所有這些位元轉換為工作腳本。我不想再進行 T&E 運行。 :/

答案1

建立這個批次檔:

@echo off
for %%F in (*.pdf *.tex) do call :subr "%%F"
exit /b

:subr
set filename=%1
move %1 %filename:~1,3%\Pictures
exit /b

筆記:

  • for %%F in (*.pdf *.tex) do …對每個與*.pdf或設定為檔案名稱相符的檔案名稱執行一次以下語句。*.tex%%F
  • call :subr "%%F"呼叫腳本的底部三行,第一個參數 ( %1) 設定為"%%F"(檔案名,帶引號)。
  • exit /b退出腳本而不關閉命令提示字元視窗。
  • set filename=%1將檔案名稱參數複製到filename變數中。
  • move移動文件。
  • %variable:~start,len% 取 的指示子字串(第一個字元是 #0),因此是 的前三個字元。 (計數從 0 開始;我使用 1 來跳過。)%variable%%filename:~1,3%%filename%"
  • exit /b從子程序返回。

相關內容