我有一堆檔案夾,每個檔案夾里面都有多個檔案(如果重要,所有 mkv 檔案)
我想做的是遍歷每個檔案夾,并將檔案夾中的每個 mkv 檔案替換為以已洗掉的 mkv 檔案命名的空文本檔案。
mkv 檔案都有不同的名稱。這可以通過批處理檔案copy /b NUL EmptyFile.txt
以某種方式完成嗎?
uj5u.com熱心網友回復:
您可以簡單地遍歷目錄并使用變數擴展來獲取名稱,創建文本檔案,然后洗掉.mkv
檔案:
@echo off
for /F "delims=" %%i in ('dir /b /s *.mkv') do break>"%%~dpni.txt" && del /Q /S "%%~i"
這將簡單地將每個檔案名分配給元變數,%%i
然后擴展到驅動器、路徑和名稱%%~dpni
并添加擴展名,在您想要用來創建空檔案的情況.txt
下break
。
請先在測驗檔案夾中測驗它,然后再在實際檔案上運行它。
uj5u.com熱心網友回復:
FOR /F "usebackq delims=" %%A IN (`DIR /A:d /B "C:\ParentFolder"`) DO (
FOR /F "usebackq delims=" %%B IN (`DIR /B "C:\ParentFolder\%%A"`) DO (
DEL /Q /F "C:\ParentFolder\%%A\%%B" > NUL 2>&1
ECHO. > "C:\ParentFolder\%%A\%%~nB.txt"
)
)
這將搜索 中的所有檔案夾C:\ParentFolder
,然后獲取子檔案夾中的所有檔案,然后洗掉所有找到的檔案并echo
(列印)一個空行到與原始檔案同名的 txt 檔案。
DIR
列出給定檔案夾中的所有檔案,/B
指定僅輸出裸檔案名和擴展名。/A:d
指定僅列出目錄(檔案夾)。
DEL
洗掉檔案,/Q
悄悄指定,不確認,/F
強制洗掉只讀檔案(在這種情況下不是必需的,但無論如何)
ECHO.
回顯(列印)一個空行,>
將其輸出到提供的檔案(如果檔案不存在,它將創建該檔案)。%%~nB
僅指定檔案名,不包括擴展名。
如果您不在腳本中使用它,則以下代碼可作為單行代碼:FOR /F "usebackq delims=" %A IN (`DIR /A:d /B "C:\ParentFolder"`) DO ( FOR /F "usebackq delims=" %B IN (`DIR /B "C:\ParentFolder\%A"`) DO DEL /Q /F "C:\ParentFolder\%A\%B">NUL 2>&1 & ECHO. > "C:\ParentFolder\%A\%~nB.txt" )
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/497708.html
上一篇:我需要幫助修復我創建的批處理腳本