我的批处理文件从windows目录中读取所有文件,并选择包含子目录或不包含它们,然后将列表保存到txt文件。它完美地运行,但由于某种原因,在你对子目录问题回答是或否之后,应用程序返回“找不到文件”(虽然问题确实正常运行)..我是批处理编程的新手,这让我很难过..这是代码:
@echo off
:start
set /P DIRECTORY=Type Directory to Search:
if not exist %DIRECTORY% goto firstlogin
:choice
set /P c=Include Sub-Directories?[Y/N]?
if /I "%c%" EQU "Y" goto :somewhere
if /I "%c%" EQU "N" goto :somewhere_else
goto :choice
:somewhere
dir -r -n -c -m /s /b /o "%DIRECTORY%" > C:\Users\Zack\Desktop\list_of_program_files.txt
exit
:somewhere_else
dir -r -n -c -m /b /o "%DIRECTORY%" > C:\Users\Zack\Desktop\list_of_program_files.txt
exit
:firstlogin
echo Directory does not exist!
Pause
goto :start
答案 0 :(得分:1)
从-r -n -c -m
的电话中删除dir
。
或者使用2>nul
将stderr管道化为虚无以抑制错误消息。
答案 1 :(得分:1)
我冒昧地修改了你的脚本:
@echo off
:start
set /P DIRECTORY=Type Directory to Search:
if not exist %DIRECTORY% goto firstlogin
:choice
set /P c=Include Sub-Directories?[Y/N]?
if /I "%c%" EQU "Y" goto :somewhere
if /I "%c%" EQU "N" goto :somewhere_else
goto :choice
:somewhere
dir "%DIRECTORY%" /A:-r /O:-n /T:c /s /b /o
goto :done
:somewhere_else
dir "%DIRECTORY%" /A:-r /O:-n /T:c /s /b /o
goto :done
:firstlogin
echo Directory does not exist!
Pause
goto :start
:done
您的用户可能无权访问所有子目录,例如
c:\>dir "System Volume Information"
Volume in drive C is sys
Volume Serial Number is 7A8D-49E2
Directory of c:\System Volume Information
File Not Found
答案 2 :(得分:0)
我是批处理编程的新手
通过建设性的批评指出几点:
@echo off
取出(或REM
),当您遇到错误时,您将更好地了解代码的位置,因为每一行都会回显到控制台< / LI>
:END
标签放入其中并将流指向(GOTO END
),而不是使用exit
命令。这将允许您在另一个批处理文件中使用批处理,并且在完成此子流程时不会冒着退出两者的风险。