批处理文件dir命令

时间:2015-10-07 19:06:37

标签: windows batch-file

好吧,如果问题会变得有些笨拙,我会不知道怎么回事,但我不知道如何为你提供帮助我的信息。 我需要编写一个批处理文件才能完成几项任务。这是我写的完整代码:

@echo off  
:pasirinkimas  
cls  
echo Spauskite 1, jei norite pakeisti ekrano ir teksto spalva  
echo Spauskite 2, jei norite isvesti i ekrana sistemos kintamuosius  
echo Spauskite 3, jei norite ieskoti failu  
echo Spauskite 4, jei norite baigti darba  

set /p pasirinkimas= Iveskite psirinkima:   

if %pasirinkimas% == 1 goto Spalvos  
if %pasirinkimas% == 2 goto Kintamieji  
if %pasirinkimas% == 3 goto Paieska  
if %pasirinkimas% == 4 goto pabaiga  
goto pasirinkimas  

:Spalvos  
echo 0 = Black        A = Light Green  
echo 1 = Blue         B = Light Aqua  
echo 2 = Green        C = Light Red  
echo 3 = Aqua         D = Light Purple  
echo 4 = Red          E = Light Yellow  
echo 5 = Purple       F = Bright White  
echo 6 = Yellow  
echo 7 = White  
echo 8 = Gray  
echo 9 = Light Blue  

set /p fonas= Pasirinkite fono spalva:   
set /p tekstas= Pasirinkite teksto spalva:  
color %fonas%%tekstas%  
goto pasirinkimas  

:Kintamieji  
set  
:loop  
echo Ar norite testi darba (t/n)?:  
set /p darbas=  
if %darbas% == t goto pasirinkimas  
if %darbas% == n goto pabaiga  
goto loop  

:paieska  
echo iveskite ieskomo failo pavadinima:  
set /p ieskau=  
dir %ieskau%  
pause>null
goto pasirinkimas  

pause>null  

:pabaiga  
exit  

所以我需要帮助第三个功能。搜索文件。虽然我已经开始了@echo,但是当我试图查找文件时,无论文件是否被找到,屏幕都会显示不需要的文本:

Volume in drive C has no label.  
Volume Serial Number is DEB6-826F  
Directory of "displays directory the batch file is in"  

我需要的是:
1.如果批次找到我正在搜索的文件,它将显示文件大小(它会做+前两条不需要的行) 2.当它找不到我正在寻找的文件时,我需要批处理文件来显示我选择的信息 我如何实现这一目标?

就我有限的初学者知识而言,@ echo off应该已经处理了卷消息。 尝试使用 dir / b / s%ieskau%行更改 dir%ieskau%行,但仅显示文件目录。我需要+文件大小。

(我希望我能够清楚地知道我需要什么。试图尽可能清楚并提供可能需要的所有信息)

2 个答案:

答案 0 :(得分:1)

<强>编辑

if exist "%ieskau%" (
    dir /a-d "%ieskau%" 2>nul | findstr /r /c:"^ .*:\\.*" /c:"^  [ ]*[1-9]"
) else (
    echo File not found
)

如果指定的文件存在,请检索信息,否则显示错误。

dir输出由findstr使用两个正则表达式(/r)进行过滤:第一个将匹配带有文件夹名称的行(唯一以空格和包含字符串:\),第二个将匹配具有文件大小的行(以两个或多个空格开头,后跟1到9之间的数字)

答案 1 :(得分:0)

你可以做类似的事情;

Cd C:\
if not exist "*%ieskau%*" goto none
dir /s /b "*%ieskau%*" >C:\myfile.txt
for /f "delims=" %%i in (text.txt) do set c=%%i
echo these are your files %c%
exit /b
:none
echo no file found.
exit /b

但你必须让它加载大约10秒(在搜索时)同时/ b是可选的,它只是让它看起来更好......

希望有所帮助...