如何设置文本文件每行的值?

时间:2015-09-05 14:19:08

标签: batch-file

我有这个文本文件:

NJ01_27Ground
nj01stripclub
others...

好的,现在我想在我刚写的这个批处理文件中设置它们的值而不是模型名称:

Set /p "r=Model name? >> "
if exist "F:\Map 4 animation\%r%.obj" (echo %r%>>Loaded.txt) else (echo %r%>>Unloaded.txt)
test.bat>>test.bat

我的意思是例如这将是第一行:

set r=NJ01_27Ground
if exist "F:\Map 4 animation\%r%.obj" (echo %r%>>Loaded.txt) else (echo %r%>>Unloaded.txt)
test.bat>>test.bat

1 个答案:

答案 0 :(得分:0)

下面的批处理代码会创建一个名为ExistenceCheck.bat的批处理文件。

@echo off
setlocal
set "OutputBatch=ExistenceCheck.bat"
>"%OutputBatch%" echo @echo off
>>"%OutputBatch%" echo del Loaded.txt Unloaded.txt 2^>nul
for /F "usebackq delims=" %%I in ("InputTextFile.txt") do (
    >>"%OutputBatch%" echo if exist ^"F:\Map 4 animation\%%I.obj^" ^(echo %%I^>^>Loaded.txt^) else ^(echo %%I^>^>Unloaded.txt^)
)
endlocal

对于InputTextFile.txt中的每个非空/空行,一行会附加到输出文件ExistenceCheck.bat

文件ExistenceCheck.bat最后包含例如:

@echo off
del Loaded.txt Unloaded.txt 2>nul
if exist "F:\Map 4 animation\NJ01_27Ground.obj" (echo NJ01_27Ground>>Loaded.txt) else (echo NJ01_27Ground>>Unloaded.txt)
if exist "F:\Map 4 animation\nj01stripclub.obj" (echo nj01stripclub>>Loaded.txt) else (echo nj01stripclub>>Unloaded.txt)

我希望,这个批处理文件是你最终想要的。

Test.bat>>Test.bat绝对不是个好主意。执行一个批处理文件,该文件最后将其输出附加到自身,也由命令处理器处理,这很容易导致语法错误或几乎无休止的批处理文件。