我有一個編譯源映射的腳本,但唯一可以這樣做的方法是複製映射(.vmf)文件並將其命名爲mapCompiler_copy 。我需要這樣做,因爲用於編譯映射的程序在識別映射文件時必須具有特定的名稱。批處理:指定最初指定爲通配符的文件的變量名稱
比方說,我只有一個文件夾內一個.vmf文件,可以說,它是:
C:\CompilerScript\myMap.vmf
我將如何使用批處理腳本指定名爲「MYMAP」一個變量不最初知道地圖文件的名稱?(因爲不同的人會以不同的方式命名他們的地圖)。
set mapfolder=%1
set mapname=mapCompiler_copy.vmf
set mapname_bsp=mapCompiler_copy
copy /B %1\*.vmf %1\%mapname%
set map="%mapfolder%\%mapname%"
這是腳本是如何工作的,現在,在您拖動和文件夾拖放到腳本,該腳本使得地圖文件,並將其命名爲mapCompiler_copy.vmf的副本,這是我在後來的使用程序,例如:
call vbsp.exe -notjunc -leaktest -game "C:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Source\cstrike" %map%
編輯:更具體,我會拖累和文件夾拖放到腳本,此文件夾的內容僅是地圖文件(.vmf)。我希望腳本能夠存儲地圖的名稱,唯一的信息是擴展名爲(.vmf),並且文件夾內只有一個地圖文件。這是因爲不同的人編譯多個地圖將有不同的地圖文件名稱
這個解決方案效果很好,但是有什麼辦法可以在最後爲我們指定一個帶有.bsp的變量的地圖名?這是爲了在編譯之後,我需要將它複製到cstrike maps文件夾中,並使用該映射啓動遊戲,但只能使用.bsp文件而不是.vmf文件來執行此操作。 –
看我的編輯 - 你的意思是? – aschipfl
雖然這確實有效,但每當我使用%FILE%編譯程序時,它都會指向其他內容。我是否需要封裝整個程序並將_endlocal_放在最後? –