在cmd提示符下使用不带路径和扩展名的文件名

问题描述:

我有一个包含子文件夹和文件的文件夹。在cmd提示符下使用不带路径和扩展名的文件名

我想在这个文件夹里没有路径和扩展名的文件名。

我不想在子文件夹里面有任何文件名(没有递归性)。

for /f "tokens=*" %i in ('dir /b /a-d') do echo %~ni 

使用它在一个批处理文件,增加一倍的百分比,体征:

for /f "tokens=*" %%i in ('dir /b /a-d') do echo %%~ni 
+0

当试图使用> f.txt制作txt文件时,它只给出最后一个文件名。 – paulcab

+1

只是添加'> f.txt'会覆盖文件,导致只包含姓氏的文件。或者使用'>> f.txt'(追加)或者把命令放在parantheses中:'(for/f .... do echo %%〜ni)> f.txt'来获得完整的列表。 – Stephan

+0

哦谢谢,工作得很好。 – paulcab

在PowerShell中,这将是这样的:

ls -file | % { $_.basename }

如果你想从一个cmd shell中运行这个,你可以这样做:

powershell.exe -command { ls -file | % { $_.basename } }

PowerShell的岩石为像这样的事情,所以除非你真的必须使用普通的旧CMD.exe,我建议使用这个。

+0

哦感谢。但我不知道如何使用PowerShell。我得到了在cmd中使用它的答案。 – paulcab

+0

虽然如果你有时间检查出来,它会让你的脚本生活变得更容易:) – n3wjack