Batch file 如何在批处理脚本中使用用户输入值编辑.ini/.txt中的行?
假设我包含一个.zip文件和一些文件,即我的批处理脚本(已完成90%)和一个名为“game WINDOWSNAME.ini”的.ini,并且在所述ini中有几行Batch file 如何在批处理脚本中使用用户输入值编辑.ini/.txt中的行?,batch-file,Batch File,假设我包含一个.zip文件和一些文件,即我的批处理脚本(已完成90%)和一个名为“game WINDOWSNAME.ini”的.ini,并且在所述ini中有几行 vid_defheight=y vid_defwidth=x 我希望我的批处理脚本在运行时是这样的,它要求“屏幕分辨率x”表示“vid_defwidth=x”,屏幕分辨率y表示“vid_defheight=y”,用户为每一行输入一个值,例如“1920和1080”,然后.ini将所述行更改为匹配,例如 vid_defheight=108
vid_defheight=y
vid_defwidth=x
我希望我的批处理脚本在运行时是这样的,它要求“屏幕分辨率x”表示“vid_defwidth=x”,屏幕分辨率y表示“vid_defheight=y”,用户为每一行输入一个值,例如“1920和1080”,然后.ini将所述行更改为匹配,例如
vid_defheight=1080
vid_defwidth=1920
我该怎么做
[编辑:正在使用的加载项代码] 因此,我基于更多的谷歌搜索做了这个,但它所做的只是将文件读入控制台。有人能告诉我我做错了什么吗
@echo off &setlocal
set "search=oldcrapx"
set "replace=1920"
set "textfile=zdoom-WINDOWSNAME.ini"
set "newfile=zdoom-%username%.ini"
(for /f "delims=" %%i in (%textfile%) do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
))
pause
改变
到
您将在新文件“zdoom-%username%.ini”中获得该输出(其中,
%username%
将被一袋土豆替换)。您是希望用户输入分辨率,还是从WMI获取桌面分辨率?您可以自动获取桌面分辨率,而无需向用户提示,如下所示:
@echo off
setlocal
:: make sure vars are undefined
set ScreenWidth=
set ScreenHeight=
for /f "delims=" %%I in ('wmic desktopmonitor get ScreenWidth^,ScreenHeight /format:list ^| find "="') do (
set "%%I"
if defined ScreenWidth if defined ScreenHeight goto next
)
:next
echo Display is %ScreenWidth% x %ScreenHeight%
:: record %ScreenWidth% and %ScreenHeight% to ini file
如果希望用户输入宽度和高度值,请使用set/p
。有关更多信息,请参阅cmd控制台中的帮助设置。下面是一个例子:
set /P "vid_defwidth=Screen res X: "
set /P "vid_defheight=Screen res Y: "
echo You defined a resolution of %vid_defwidth% x %vid_defheight%
在上一个示例中,脚本将Screen res X:
返回到控制台,光标位于末尾,等待用户输入。当用户输入一些文本时,脚本将%vid_defwidth%
设置为该文本,并移动到下一行以请求屏幕分辨率:
因为在批处理脚本中是新的,并且编程编辑INI文件对于您的经验级别可能有点高级,您可能会考虑使用外部帮助器修改INI文件。请参阅的后半部分(向下滚动至更新部分),以获得一个好的选择(如果我这样说,请看我自己)。
您是如何做的?要求用户输入值?是否将这些值写入.ini
文件?是否获取当前用户的用户名?重命名文件?你用谷歌搜索过这些东西吗,或者你只是在找人帮你写剧本?我用谷歌搜索过,找不到我要找的东西。我发现了如何重命名,所以忽略它。我主要想知道如何要求用户输入屏幕分辨率x和y,并让它用用户输入值替换vid_defwidth=x和vid_defheight=y的x和y值。
@echo off
setlocal
:: make sure vars are undefined
set ScreenWidth=
set ScreenHeight=
for /f "delims=" %%I in ('wmic desktopmonitor get ScreenWidth^,ScreenHeight /format:list ^| find "="') do (
set "%%I"
if defined ScreenWidth if defined ScreenHeight goto next
)
:next
echo Display is %ScreenWidth% x %ScreenHeight%
:: record %ScreenWidth% and %ScreenHeight% to ini file
set /P "vid_defwidth=Screen res X: "
set /P "vid_defheight=Screen res Y: "
echo You defined a resolution of %vid_defwidth% x %vid_defheight%