簡體   English   中英

批處理文件目錄命令

[英]Batch file dir command

好的,很抱歉,這個問題不會太笨拙,但是我不知道該如何為您提供信息,以便您能夠幫助我。 我需要編寫一個批處理文件才能執行多個任務。 這是我編寫的全部代碼:

@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%行,但僅顯示文件目錄。 我需要那個+文件大小。

(我希望我對我的需求足夠清楚。力求盡可能清晰,並提供所有可能需要的信息)

已編輯

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之間的一個數字)

你可以像這樣做

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是可選的,這只會使其看起來更好...

希望有幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM