我有一个文件夹,其中包含文件夹 root/sound/weapon/ak47、root/sound/weapon/m1。root/sound/weapon/m4a1 等。ak47、m1、m4a1 文件夹位于 root/sound/weapon 中。
我想用cmd将这些路径导出到.txt。
例如:
root/sound/weapon/ak47
root/sound/weapon/m4a1
root/sound/weapon/m1
我知道DIR root\sound\weapons /B /O >Names.txt
将名称 ak47、m1、m4a1 导出到 .txt 但我想不出如何获取路径。
答案1
添加/s
参数将在列表中包含子目录(您可能不想要),但副作用是它还会显示所有文件的完整路径(您想要的):
因此,尝试类似的事情DIR root\sound\weapons /B /S >Names.txt
。
另一种方法(不包括子文件夹)是创建一个批处理文件并使用For
。 就像是:
@echo off
if exist files.txt del files.txt
for /f %%a in ('dir %1 /b') do @echo %1\%%a >> files.txt
运行批处理文件并提供您想要的 DIR 路径,例如:myBatch.bat c:\Path
答案2
我想用 cmd 将这些路径导出到 .txt
笔记:
- 在 Windows 上,路径分隔符
\
不是/
。
从cmd
shell中:
如果您只想要路径:
for /f %i in ('dir /a:d root\sound\weapon /b /s') do @echo %~pnxi >> Names.txt
例子:
F:\test>for /f %i in ('dir /a:d root\sound\weapon /b /s') do @echo %~pnxi >> Names.txt
F:\test>type Names.txt
\test\root\sound\weapon\ak47
\test\root\sound\weapon\m1
\test\root\sound\weapon\m4a1
如果您也想要驱动器,那么使用:
for /f %i in ('dir /a:d root\sound\weapon /b /s') do @echo %~fi >> Names.txt
例子:
F:\test>for /f %i in ('dir /a:d root\sound\weapon /b /s') do @echo %~fi >> Names.txt
F:\test>type Names.txt
F:\test\root\sound\weapon\ak47
F:\test\root\sound\weapon\m1
F:\test\root\sound\weapon\m4a1
在批处理文件中:
%
用。。。来代替%%
。
for /f %%i in ('dir /a:d root\sound\weapon /b /s') do @echo %%~pnxi >> Names.txt
或者:
for /f %%i in ('dir /a:d root\sound\weapon /b /s') do @echo %%~fi >> Names.txt
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 目录- 显示文件和子文件夹的列表。
- 对于/f- 循环命令以执行另一个命令的结果。
- 参数- 命令行参数(或参数)是传递到批处理脚本的任何值。