
【已解決】批處理如何處理路徑或文件名的空格以及在文本中指定字符串后面添加空格最后由 pan528 于 -10-3 07:54如何解決DOS下的空格問題一、問題最近我在玩一款推箱子游戲。Sokoban YASC,https://sourceforge.net/projects/sokobanyasc/Sokoban YASC 自帶了許多關卡,其實都附上了答案。但為了增加玩家的解關動力,作者屏蔽了答案。經分析,作者只是將關卡標識后的空格刪除了,或者說在標識后加上空格就答案就“解鎖”了。我想寫一個批命令,讓它自動解鎖。二、材料關卡文件的位置在“%USERPROFILE%documentsSokobanSokoban YASCLevels”。關卡文本的名稱中有二個是帶空格的。關卡的標識字符是“Solution”三、我寫的命令
這個命令顯然不能一步完成。主要是因為不知道在上述循環命令中怎樣解決空格問題,試過用引號的方式,但會出錯,結果命令寫成上述樣子。四、求助上述三個方面涉及到空格:文本名中有空格;路經中有空格;解關文本中要在標識后加入空格。如何一步完成批處理,請高手指點。nclick="copycode($('code0'));">復制代碼
- @echo off
- color 17
- echo.
- echo 按任意鍵,生成“解開關卡答案命令 YASC.bat”并打開關卡目錄,請運行它,對關卡答案解鎖!
- pause>nul
- more /e +9 %0>>%USERPROFILE%documentsSokobanSokoban YASCLevelsYASC.bat
- explorer %USERPROFILE%documentsSokobanSokoban YASCLevels
- goto:eof
- @echo off
- color 17
- echo.
- echo 正在對關卡答案解鎖,并保存為TXT文本,請稍候 ...
- if exist Crazy Monk.sok ren Crazy Monk.sok Crazy_Monk.sok
- if exist du Peloux.sok ren du Peloux.sok du_Peloux.sok
- setlocal enabledelayedexpansion
- for %%a in (*.sok)do (
- for /f delims= %%i in (%%a)do (
- set m=%%i
- if !m:~0,8! == Solution (echo !m:~0,8! !m:~8!)else echo !m!
- )>>%%~na.txt
- )
- ren Crazy_Monk.sok Crazy Monk.sok
- ren du_Peloux.sok du Peloux.sok
- ren Crazy_Monk.txt Crazy Monk.txt
- ren du_Peloux.txt du Peloux.txt

