剛剛接觸批處理腳本並遇到問題:我被要求在整個c:\驅動器中列出名稱長度爲7個字母的所有文本文件並將其輸出到文件中。我無法弄清楚。批處理腳本 - FOR和IF
搜索谷歌的無盡小時後,我想出了這一點:
for /R C:\ %i in (.\*) do if %~ni==???????.txt echo %i > file.txt
現在我明白這可能是錯誤的,由於事實上...它不工作。
在此先感謝。約翰·W·
剛剛接觸批處理腳本並遇到問題:我被要求在整個c:\驅動器中列出名稱長度爲7個字母的所有文本文件並將其輸出到文件中。我無法弄清楚。批處理腳本 - FOR和IF
搜索谷歌的無盡小時後,我想出了這一點:
for /R C:\ %i in (.\*) do if %~ni==???????.txt echo %i > file.txt
現在我明白這可能是錯誤的,由於事實上...它不工作。
在此先感謝。約翰·W·
我想這會做到這一點。爲此,您並不需要一批文件。
dir /s /b C:\*.txt | findstr "\\.......\.txt$" > files.txt
更新:
,使之成爲123\123.txt
使用工作
dir /s /b C:\*.txt | findstr "\\[^\\][^\\][^\\][^\\][^\\][^\\][^\\]\.txt$" > files.txt
我把代碼放到一個批處理文件,那麼你必須仔細的百分號for循環。
由於FOR/R支持一些很好的功能,例如搜索文件掩碼,您可以使用它。
但是????將找到所有具有最大數量問號的文件,而不僅僅是excact匹配。
因此,我在以後測試文件名,如果它有至少7個字符
setlocal EnableDelayedExpansion
for /R C:\temp\ %%i in (???????.txt) do (
set "filename=%%~ni"
if "!filename:~6,1!" NEQ "" (
echo has 7 characters %%i
)
)
感謝您的快速反應,然而,該解決方案下面是一個小我更容易弄清楚。不要說你的問題並不簡單,但我已經很困惑了。有一個問題,FOR命令的'set'參數是否不需要一組文件,而不是「??????。txt」字符串? – JohnW 2012-03-22 11:47:12
好的,這比我的解決方案有點智能 – jeb 2012-03-22 11:47:09
優秀!我在完全錯誤的軌道上,感謝您的快速反應! – JohnW 2012-03-22 11:47:33
@jeb但是我知道你會對,所以我必須努力工作:) @JohnW現在我已經將'$'添加到正則表達式中,使其更加健壯。 – adarshr 2012-03-22 12:00:31