2010-06-23 105 views

回答

0

你的意思是下列構建命令shell(CMD.EXE):

for %f IN (*.*) DO echo %f 
+0

我想用當前目錄中的每個文件作爲參數調用myprog。 – akula1001 2010-06-23 13:04:39

3

如果你的目標是所謂的「MYPROG.EXE」爲目錄中的每個文件,假設「MYPROG.EXE 「沒有按itselef處理通配符,它​​應該是類似的東西在PowerShell中:

dir | % {prog $_.FullName} 

編輯:把你的意見考慮進去,試試這個:

prog (get-childItem -name) 

希望它有幫助...

+0

我想用多個參數只運行myprog的一個實例,每個參數對應於當前目錄中的文件。 例如:在unix中,'myprog *'會展開爲'myprog a.txt g.txt p.txt'..等等 – akula1001 2010-06-23 13:06:43

2

我在函數ea(ExpandAll?)中包裝了CédricRup的解決方案。雖然不像Unix方法那麼幹淨。

function ea ($p="*") { dir $p | foreach { '"{0}" ' -f $_.Name } } 

.\Myprog.exe (ea) 
.\Myprog.exe (ea *) 
.\Myprog.exe (ea *.txt) 
+1

事實上,沒有必要保護文件名中的空間......所以,一個簡單的get- childItem -name會訣竅 – 2010-06-23 14:35:19

1

在一個.cmd或.bat文件:

SETLOCAL EnableDelayedExpansion 
FOR %%f in (*) DO SET params=!params! "%%f" 
CALL myprog %params% 

SETLOCAL EnableDelayedExpansion!variable!語法讓你積累的結果。 (請參閱this page以獲取解釋和示例。)

編輯:在%% f周圍添加引號,並將列表更改爲'*'...請參閱下面的註釋。

+0

+1,但你應該用''PARAMS!!'在雙引號中包裝來保護文件名中的空格 – 2010-06-23 14:31:07

+0

@Frank:一點也不。你應該把'%% f'放進引號中。 「」「」「1.txt」2.txt「3.txt」4.txt「5.txt」的文件列表會有點奇怪。 ewall:使用'*'作爲通配符就足夠了。 – Joey 2010-06-23 17:49:18

+0

@Johannes我留在*。*中作爲避免列出子目錄的簡單方法......但我應該提到文件名有假設。擴展和子文件夾不。謝謝! – ewall 2010-06-23 21:08:43

相關問題