如果你想直接從批處理文件中完成一些複雜的工作,那麼你有一點點要學習。
研究名單:
FOR
SET
CALL
你要使用FOR
命令來獲取文件名;請注意0選項。例如:
set BAT_DGNFNM=
for %%F in (*.dgn) do set BAT_DGNFNM=%%~nF
這會導致將環境變量BAT_DGNFNM
設置爲基本文件名。然而,它遍歷所有的文件,所以真的,你需要它來調用一個子程序爲每個文件:
for %%F in (*.dgn) do call :DODGN "%%~dpnxF" "%%~nF"
這調用子程序:DODGN
,並將它傳遞兩個引號封裝的參數;第一個是完全合格的文件名,第二個是基本文件名。
然後你做實際的文件中的子程序處理:
:DODGN
set BAT_DGNFNM=%1
set BAT_DGNBNM=%2
REM Do stuff with BAT_DGNBNM using SET commands
GOTO :EOF
你需要確保你沒有「貫穿」主循環後的子程序完成,你應該當你完成後清理你的環境變量,所以這看起來像這樣:
@echo off
for %%F in (*.dgn) do call :DODGN "%%~dpnxF" "%%~nF"
goto ENDIT
:DODGN
set BAT_DGNFNM=%1
set BAT_DGNBNM=%2
REM Do stuff with BAT_DGNBNM using SET commands
GOTO :EOF
:ENDIT
set BAT_DGNFNM=
set BAT_DGNBNM=
祝你好運 - 這東西可以變得複雜。
最後提醒:大多數你的學習曲線將與SET
命令 - 這就是你如何提取出子一個環境變量,並把它變成另一種,執行文本替換等
這東西是這樣在VBS或PowerShell中更容易。
是否必須批量寫入?您的系統是否安裝了任何腳本語言,如python,php,或者您的系統是否安裝了Windows 10 bash shell?批處理是寫一些東西的一種可怕的方式,它的編寫/調試令人困惑,並且沒有多大意義。你機器上有C#編譯器嗎?幾乎任何解決方案都比基於批處理的解決方案更好。 – HumbleWebDev
建築號碼是否總是在括號內?你打算給「(樓號)」命名目錄嗎?還包括括號?此外,您應該知道,在不顯示代碼的情況下詢問代碼問題不在此處,請[編輯](https://stackoverflow.com/posts/45942579/edit)您的帖子以包含您遇到問題的代碼與,解釋到底是什麼麻煩與它。 – Compo
對不起,我是Stackoverflow的新手,我沒有我要求別人幫我的代碼。然而,對於你的問題,paren只是一個佔位符。邪惡的程序員 - 使用工作機器我們只使用CMD。所以文件名100-assig-flr-plan.dgn需要進入100文件夾的平面圖子文件夾。 –