
我想創建一個小批次文件,在一個磁碟文件上列出我的所有內容。命令是這樣的:
TREE L: / F / A> List.txt
但我希望使用者輸入要處理的磁碟機號,並將結果放入帶有名稱和當前日期的檔案中。例子:
C:\> makelist.bat
Please, insert the drive letter: L
Done!
結果必須輸入名為 example 的檔案中List_2017-03-13.txt
並移動到桌面
我應該使用什麼命令來創建腳本?
答案1
以下批次使用 wmic 來
- 取得獨立於區域設定/使用者設定的日期
- 取得可用磁碟機號碼的列表
- 並選擇一個字母
:: makelist.bat
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
set Started=%date% %time%
:: get locale/user-settings independent date
for /f "delims=." %%A in (
'wmic os get LocalDateTime^|findstr ^^[0-9]'
) do Set "DT=%%A"
Set MyDate=%DT:~0,4%-%DT:~4,2%-%DT:~6,2%
:: gather available drives
Set "Drives="
FOr /f "delims=:" %%A in (
'Wmic logicaldisk get name^|findstr "^[A-Z]:"'
) DO Set "Drives=!Drives!%%A"
:: choose drive letter
Choice /C %Drives% /M "Select drive letter for tree"
Set /A "Inp=%Errorlevel%,Pnt=Inp-1"
IF %Inp% equ 0 Echo aborted & pause & exit /B 1
If %Inp% equ 255 Echo aborted & pause & exit /B 1
Set "Drive=!Drives:~%Pnt%,1!"
:: do the tree
Echo %Started% Tree started
Echo Tree %Drive%:\ /F /A "%UserProfile%\Desktop\Tree_%Drive%_%MyDate%.txt"
Tree %Drive%:\ /F /A >"%UserProfile%\Desktop\Tree_%Drive%_%MyDate%.txt"
Echo %date% %time% done
timeout -1
範例對話框:
Select drive letter for tree [C,D,E,G,H,K,M,N,P,Q,R,T,U,V,W,X,Z]?H
2017-03-13 14:17:05,45 Tree started
Tree H:\ /F /A "C:\Users\UserName\Desktop\Tree_H_2017-03-13.txt"
2017-03-13 14:17:13,70 done
Drücken Sie eine beliebige Taste, um den Vorgang fortzusetzen...
答案2
樹2txt.bat:
@tree %1 / F / A > Tree_%1_%date.TxT
用法:
tree2txt X:
結果:磁碟機 X:\ 的樹到名為 Tree_X_20170313.TxT 的文件
請注意,日期的輸出格式取決於您本地的日期格式設定(yyyy-mm-dd 和其他格式)。