使用批处理为某些类型的文件创建 txt 文件

使用批处理为某些类型的文件创建 txt 文件

我有一个包含所有类型文件的文件夹。假设我的文件夹路径是E:/temp

我只想为.avi类型文件创建一个 txt 文件,并将该 txt 文件命名为电影的名称。因此,如果我的.avi文件夹中有 20 个剪辑文件,我想打开 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含有“快乐的“。创建名为制作快乐包含这个:

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

跑步使快乐。新的文本文件将具有双重扩展名,但如果有必要,也可以通过其他方法解决这个问题。

相关内容