環境:
Windows 2016 Server Standard
Windows 命令提示符和批處理檔案
我正在嘗試按 DateCreated 或 DateModified 對子檔案夾進行排序并獲取最新的檔案夾名稱。
for %%i in ('DIR /AD /OD /B') do echo %%i
我期待這會給我集合中最后一個檔案夾的名稱。我測驗了 DIR 命令,并確認最后一個子檔案夾確實是我正在尋找的。相反,我得到以下結果:
C:\ProgramData\UPS\install\wpf>
'DIR
/AD
/OD
/B'
uj5u.com熱心網友回復:
編輯
正如@aschipfl所指出的,它delims=也可以作業,usebackq但對于這種情況來說有點矯枉過正。而且最好使用echo %%i & goto :EOF而不是(echo %%i & goto :EOF)避免不必要的尾隨空格。因此,結合評論中提到的添加內容,可以使用以下內容:
for /F "delims=" %%i in ('DIR /AD /OD /B') do echo %%i & goto :EOF
為了完成,這里是檔案delims=
delims=xxx - 指定分隔符集。這將替換默認分隔符集的空格和制表符。
初步答案
您正在尋找的附加選項(使用 /F 標志)是“usebackq”
usebackq - 指定新語意生效,其中反引號字串作為命令執行,單引號字串是文字字串命令,并允許使用雙引號來參考檔案集中的檔案名。
所以更新的命令將是
for /F "usebackq" %%i in (`DIR /AD /OD /B`) do echo %%i
請注意,單引號被替換為“反引號”(盡管我一直稱它們為“重音”或“反引號”)。這使得for在它們之間執行命令。
uj5u.com熱心網友回復:
這給出了最后寫入的日期和目錄的完全限定路徑。它在batch-file運行中cmd運行windows。這需要 5 年前發布的最新 Windows PowerShell 5.1。它還運行在 PowerShell Core https://github.com/PowerShell/PowerShell
powershell -NoLogo -NoProfile -Command ^
"Get-ChildItem -Directory -Recurse | Sort-Object -Property LastWriteTime | Select-Object -Property LastWriteTime,FullName"
如果您可以使用 PowerShell 控制臺,那就更容易了。
Get-ChildItem -Directory -Recurse | Sort-Object -Property LastWriteTime | Select-Object -Property LastWriteTime,FullName
并且仍然可以使用別名來縮短打字時間。別名不應寫入腳本檔案。
gci -dir -re | sort LastWriteTime | select LastWriteTime,FullName
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451384.html
上一篇:將檔案串列復制到特定檔案夾位置
下一篇:受信任的發布者證書安裝
