使用批次為某些類型的文件建立txt文件

使用批次為某些類型的文件建立txt文件

我有一個包含所有類型文件的資料夾。假設我的資料夾路徑是E:/temp.

我想僅為.avi類型文件創建一個 txt 文件,並將該 txt 文件命名為電影的名稱。所以如果我的資料夾中有20個剪輯.avi文件,我想打開20個txt文件,並且每個txt文件將以剪輯命名。

另外,我需要在txt檔案中寫入(對於所有txt檔案都是相同的)單字“HAPPY”

使用批次檔的腳本是什麼?

答案1

您需要使用FOR來迭代您想要使用的元素。看如何在批次檔中循環匹配通配符的文件了解詳情。

解決該部分後,您將需要建立.txt檔案的檔案名稱。的命令列文檔FOR可以在這裡幫助我們:

In addition, substitution of FOR variable references has been enhanced.
You can now use the following optional syntax:

    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only

最後一個條目就是我們想要的。我們想要切斷.avi,因此我們~n在變數中使用來僅獲取名稱。這就是%%~nf.txt來自的地方。

%%f我們從目前檔名開始。然後我們剪掉延伸部分%%~nf並黏上.txt...完成:%%~nf.txt

最後一個問題是當您嘗試在一行中解決所有問題時,例如:

FOR %%f IN (*.avi) DO ECHO HAPPY > %%~nf.txt

這是行不通的,因為 shell 將解釋>並立即開始輸出到該文件,這不是我們想要的。我們希望ECHO對每個文件進行處理,所以我只是將其分成多行。

@ECHO OFF

REM Iterate over all *.avi file in the current directory
FOR %%f IN (*.avi) DO (
    REM Cut off the extension from %%f, tack on .txt and 
    REM use it as the filename for our HAPPY output
    ECHO HAPPY > %%~nf.txt
)

答案2

建立一個名為的文字文件快樂.txt含有“快樂的」。建立一個批次文件,名為makehappy.cmd包含這個:

for %%i in (*.avi) do copy happy.txt "%%i.txt"

跑步使快樂。新的文字檔案將具有雙副檔名,但如果有必要,有一些方法可以解決這個問題。

相關內容