Jer*_*ley 9 windows batch-file command-prompt
我试图列出不包括扩展名的文件名,
我想要它的方式:
File1
File2
File3
Run Code Online (Sandbox Code Playgroud)
目前情况:
File1.txt
File2.txt
File3.txt
Run Code Online (Sandbox Code Playgroud)
我尝试使用
File1
File2
File3
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我在批处理文件和命令提示符中都尝试过。
我使用了正确的命令吗?
例如,假设扩展名总是.txt:
for %f in ("*.txt") do @echo %~nf
Run Code Online (Sandbox Code Playgroud)
我们没有使用 DIR,而是使用 FOR 命令遍历列表并将每个列表发送到 ECHO,将“~n”选项插入到 %f 中,以导致不显示扩展名。
另一种选择是
FORFILES /c "cmd /c echo @fname"
Run Code Online (Sandbox Code Playgroud)
但是,有了这个,我会在每个输出文件名周围加上引号,这不是您想要的。
for %%f in ("*.txt") do @echo %%~nf
Run Code Online (Sandbox Code Playgroud)
只要目录不包含任何名称带有扩展名的子目录,您就可以概括*.txt为*.*:
for %f in ("*.*") do @echo %~nf
Run Code Online (Sandbox Code Playgroud)
如果文件有扩展名但之前没有任何扩展名,例如.gitignore,生成的空ECHO命令将输出一条无意义的消息,例如为ECHO is on. 避免这种情况,您可以ECHO is使用FIND命令和/V选项过滤掉包含, 的行:
for %f in ("*.*") do @echo %~nf | find /v "ECHO is"
Run Code Online (Sandbox Code Playgroud)
当然,如果您的本地语言导致 DOS 输出其他内容,ECHO is则此过滤将不起作用。它会错过文件名中恰好包含的任何文件ECHO is。
这种疯狂,但这是我们为使用批处理语言而不是任何其他语言(根本!)付出的痛苦代价。我就像一个酒鬼,向所有人承诺我永远不会再写一行 Batch 代码,然后发现自己又回来这样做了,害羞地。
| 归档时间: |
|
| 查看次数: |
22503 次 |
| 最近记录: |