Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何在批处理脚本中使用用户输入值编辑.ini/.txt中的行?_Batch File - Fatal编程技术网

Batch file 如何在批处理脚本中使用用户输入值编辑.ini/.txt中的行?

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

假设我包含一个.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=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%