![哪些命令可以显示目录中文件的编号列表?](https://linux22.com/image/1228407/%E5%93%AA%E4%BA%9B%E5%91%BD%E4%BB%A4%E5%8F%AF%E4%BB%A5%E6%98%BE%E7%A4%BA%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%96%87%E4%BB%B6%E7%9A%84%E7%BC%96%E5%8F%B7%E5%88%97%E8%A1%A8%EF%BC%9F.png)
我想打印目录中文件名的编号列表。
我试过
dir /w > test.txt
执行此操作的命令是什么?
答案1
@echo off
setlocal enabledelayedexpansion
set num=0
FOR %%F IN (*) DO (
set /a num += 1
echo !num! %%~fF
)
echo %num% files
endlocal
“%%~fF”打印完整路径。要打印短文件名,请使用“%%F”。请参阅for /?
结尾处的所有可能扩展。
编辑:传递目录,将其更改为
FOR %%F IN (%**) DO (
并使用带有斜杠的目录名(“C:\Windows\”,而不是“C:\Windows”)或不使用目录名来调用它。
您还可以在pushd %*
for 循环之前切换到目录,然后popd
在 for 循环之后的任何时间切换到目录。如果您需要执行的操作不仅仅是枚举文件,但您想返回到原始工作目录,这将很有用。
编辑:这是更完整、带注释的版本。它还列出了目录——我错过了for
默认情况下不这样做:
@echo off
setlocal enabledelayedexpansion
:: change to a dir
pushd %*
:: file counter
set num=0
:: dirs only
FOR /D %%D IN (*) DO (
set /a num += 1
echo !num! %%D
)
:: files only
FOR %%F IN (*) DO (
set /a num += 1
echo !num! %%F
)
:: final tally
echo.
echo %num% files
:: return to original directory
popd
endlocal
只需保存为带有扩展名的文件.cmd
,然后将其放在路径中的某个位置(例如,C:\Windows),这应该可以在任何最新的 Windows 操作系统上运行(在 XP 上测试)。
答案2
您可以使用以下方式导出文件名列表文件名导出,放置数字,以您想要的任何方式格式化列表并将其打印出来。
答案3
您可以对此进行一些小改动:
@echo off
dir /b >test.txt
find /n /v "" <test.txt
del /f /q test.txt
它会显示如下内容:
[1]file1.txt
[2]file2.txt
等等。
答案4
如果使用带有 NTFS 的 Windows,我认为可以使用一切搜索引擎。它可以搜索文件类型,文件名中包含特定元素,支持正则表达式,并可以导出为 .txt。