在Windows資源管理器中,當我通過批處理文件拖放100個文件時,出現錯誤,提示「傳遞給系統調用的數據區太小」將符合條件的目錄中的所有文件傳遞給程序
我生成批處理文件採取100點的參數,像這樣,認爲它會工作
MyProg.exe %1 %2 %3 %4 %5 ... %100
MYPROG採取了一堆的路徑和做的事情給他們。
所以現在我的解決辦法是
for %%X in (*.my_ext) do (
MyProg.exe %%X
)
但是,這一次又一次的初始化我的計劃,因爲我只是路過一個文件到它,這有點違背接受的參數設置任意數量的目的,這啓動+結束正在放慢速度。
理想情況下,我想將所有文件傳遞給我的程序並讓它運行。 我該如何做到這一點?
編輯:
一個我要去的想法是這樣的一個:How to concatenate strings in a Windows batch file?
我的解決方法現在看起來是這樣。我有兩個批處理文件get_files.bat
和main.bat
get_files.bat
@echo off
set myvar=myProg.exe
for /r %%i in (*.my_ext) DO call :concat "%%i"
echo %myvar%
goto :eof
:concat
set myvar=%myvar% %1
goto :eof
main.bat
call get_files.bat > out.bat
call out.bat
我首先要創建我要調用命令,然後我把它。 這允許我將與給定的crieria相匹配的100條路徑傳遞給我的程序,儘管它似乎在某種程度上我達到了輸入字符串可以長達多長時間的限制。
理想的解決方案看起來像建立一個列表儘可能長,並將該列表傳遞給程序,然後重複,直到所有文件已被處理。這些文件可能會被遞歸搜索等。
是否可以將您的程序替換爲「MyProg %% X」? – user2033427 2013-02-21 04:13:43
對不起,你的意思是? – MxyL 2013-02-21 04:18:05
我的意思是將你的程序複製並粘貼在(* .my_ext)do('和')''中的%% X之間。 – user2033427 2013-02-21 04:19:14