Answers:
你需要使用 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
)
%%~dpnf.txt
代替。然后应该使用Drive Letter + Full Path + Name + .txt
。也许这会有所帮助。否则一定要让我知道:)