Batch file Dir命令不能按我所希望的那样工作
我应该编写一个批处理文件,该文件将查找以字母Batch file Dir命令不能按我所希望的那样工作,batch-file,directory,Batch File,Directory,我应该编写一个批处理文件,该文件将查找以字母a开头,以扩展名.dll结尾的文件 以下是我的想法: @echo off dir /b *.dll C:\windows\system32\ > dll.txt dir /b a* C:\windows\system32\ > a.txt 我的脚本没有按我想要的方式工作,因为它列出了system32目录中的所有文件 有人能帮我按原样修复吗?你可以像这批一样尝试: @echo off Set Log=%~dp0Files_DLL.txt C
a
开头,以扩展名.dll
结尾的文件
以下是我的想法:
@echo off
dir /b *.dll C:\windows\system32\ > dll.txt
dir /b a* C:\windows\system32\ > a.txt
我的脚本没有按我想要的方式工作,因为它列出了system32
目录中的所有文件
有人能帮我按原样修复吗?你可以像这批一样尝试:
@echo off
Set Log=%~dp0Files_DLL.txt
CD /D %Windir%\system32\
Dir /b a*.dll>>%Log%
Start "" %Log%
dir/b*.dll C:\windows\system32\
列出与*.dll
匹配的所有文件,然后列出与C:\windows\system32\
匹配的所有文件-即该文件夹中的所有文件。正确的语法是:
dir /b "C:\windows\system32\*.dll"
与另一行相同:
dir /b "C:\windows\system32\a*"
命令DIR支持目录列表的多个参数
dir /b *.dll C:\windows\system32\ > dll.txt
此命令行导致写入文件dll.txt
*.dll
和C:\windows\system32\
中匹配的所有非隐藏文件和文件夹名称默认通配符模式*
dir /b a* C:\windows\system32\ > a.txt
此命令行导致写入文件a.txt
C:\windows\system32\
中匹配的所有非隐藏文件和文件夹名称默认通配符模式*
C:\windows\system32\
中的dll.txt
所有*.dll文件,以及写入目录C:\windows\system32\
中的a*
所有a*
文件,这两次都包括具有隐藏属性集的匹配文件。因此,要使用的命令行是:
dir %SystemRoot%\System32\*.dll /A-D /B >dll.txt
dir %SystemRoot%\System32\a* /A-D /B >a.txt
选项/A-D
会禁用目录列表(属性不是目录),同时也会禁用通配符模式并启用隐藏文件列表
有关命令DIR的帮助,请在命令提示窗口中运行DIR/?
顺便说一句:应该考虑到。由于批处理文件是从32位应用程序中启动的,因此如果批处理文件是由64位Windows上的%SystemRoot%\SysWOW64
中的32位cmd.exe
执行的,则这两条命令行会将*.dll
和a*
目录中的文件输出到文本文件
下面的批处理文件可用于确保根据Windows体系结构获取Windows系统目录的列表,这在64位Windows上有所不同
set "SystemFolder=%SystemRoot%\System32"
if exist "%SystemRoot%\Sysnative\cmd.exe" set "SystemFolder=%SystemRoot%\Sysnative"
dir %SystemFolder%\*.dll /A-D /B >dll.txt
dir %SystemFolder%\a* /A-D /B >a.txt
非常特殊的
%SystemRoot%\Sysnative
重定向器不适用于64位应用程序,因此也不适用于由目录%SystemRoot%\System32\
中的64位cmd.exe执行的批处理文件。请注意,Sysnative
是目录还是符号链接。只能检查%SystemRoot%\Sysnative
中是否存在文件,但无法检查%SystemRoot%\Sysnative
本身是否存在。我不敢相信您的代码列出了所有文件。不管怎样,你有没有考虑过模式a*.dll
?正如我在下面所写的,我表达的是错误的。一个列表应该包含来自system32文件夹的.dll文件,另一个列表应该只包含来自同一目录但以字母a开头的文件。我在表达自己时犯了一个错误。“a.txt”应仅包含以字母a开头的文件名,“dll.txt”应仅包含扩展名为.dll的文件。我刚刚修复了一半,通过添加find命令,至少可以使.dll列表正常工作。现在它看起来像是“dir/b*.dll C:\windows\system32\| find.dll”>dll.txt”。