2017-09-23 100 views
0

我明白,這個社區是爲了幫助人們,我不是百分之百如何要求某人做一個委託工作或W/E,但我想一系列批處理文件,用於將每個批處理文件中的特定數字更改爲特定數字批處理文件打開TXT替換文本保存並關閉

echo off 
if exist %application.yml del %application.yml 
for /F "delims=" %%l in (%1) do (
    set "line=%%l" 
    set "line=%line:specific text=another word%" 
    echo/%line%>> %application.yml)' 

我將如何設置它來取代數字數組設定的號碼,我很抱歉,我本就是個白癡。

文件本身application.yml

product: 
# Cntrl alt 1 Mini, 2 m16, 3 scar, 4 m4169, 5 akm, 6 ump,7 sks 
discordUsername: 
discordPassword: 
maxCPUsUsage: 4 
shutdownKey: 0x7B 
reloadConfigKey: 0x79 

screenResolutionX: 1920 
screenResolutionY: 1080 

playerEsp: true 
playerEspColor: 0xFF00FF 
playerEspPointSize: 1 

radarEsp: true 
radarEspColor: 0x0000FF 
radarEspPointSize: 2 

vehicleEsp: true 
vehicleEspColor: 0xff0000 
vehicleEspPointSize: 1 
vehicleEspHotkey: 0x2D 

lootEsp: true 
lootEspColor: 0x00FF00 
lootAirdropEspColor: 0xffffff 
lootEspPointSize: 1 
lootEspHotkey: 0x24 

redrawTime: 0 
reloadDataTime: 2000 

aimEnabled: true 
aimKey: 0x39 
aimFOV: 95 
aimFrequency: 6 
aimPrecision: 1 
aimSpeed: 1 
bulletSpeed: 990 
aimHitbox: 0 

# Key list: https://msdn.microsoft.com/en-us/en-en/library/windows/desktop/dd375731(v=vs.85).aspx 

所以基本上我想要替換的數量是子彈的速度,它可能是從以前的變化ECT多個號碼,例如

990 
870 
400 

,如果它是我希望用這些實例替換它們中的任何一個

900 

等等等等。

因此,它搜索任何可能的數字,並將其更改爲指定的數字並將文件保存在相同的文件名下。

在此先感謝您的幫助,如果我是在我不知道什麼改變來使示例完全誠實它只是更換一個號碼給其他別提多實例搜索:)

再次任何建議或幫助。

+0

本網站ISN」請求調試程序員的正確位置,但是如果您要發佈輸入文件樣本'%1',並且它的佈局精確並顯示了它的大小,那麼您可能很幸運能夠得到可以節省的響應你必須委託某人。順便說一句,不要將代碼和文件信息發佈到評論部分,使用[edit](https://stackoverflow.com/posts/46378073/edit)工具將其添加到原始文章中。 – Compo

+0

我已經編輯了您的文章,希望能夠正確地格式化新添加的.yml文件,如果它現在是錯誤的,請讓我知道!你只想在該文件的任何位置替換與「990」匹配的確切值,或者只打算替換僅屬於「bulletSpeed」或其他內容的匹配值。 – Compo

+0

你真是太棒了,謝謝你的幫助:) –

回答

2

以下評論.bat腳本應該做的工作,但空行不會被複制到輸出文件:

@ECHO OFF 
SETLOCAL EnableExtensions 
rem redirect all output to a brand new file 
>application.yml (
    rem parse a file (supplied file name %1 must not be equal to "application.yml") 
    for /F "usebackq delims=" %%l in ("%~1") do (
     rem parse each line 
     for /F "tokens=1* delims=:" %%L in ("%%~l") do (
      if /I "%%~L"=="bulletSpeed" (
       rem modified line 
       echo(%%L: 900 
     ) else (
       rem original line 
       echo(%%l 
     ) 
    ) 
) 
) 

順便說一句,在原始腳本,你需要Delayed Expansion做出正確的引用到在括號內的代碼塊內定義的變量(重新定義)(如FOR循環體),例如如下:

echo off 
SETLOCAL EnableExtensions EnableDelayedExpansion 
if exist application.yml del application.yml 
for /F "delims=" %%l in (%1) do (
    set "line=%%l" 
    set "line=!line:specific text=another word!" 
    echo/!line!>>application.yml 
) 

資源(必讀):

+0

非常感謝我的幫助,我真的很感激 –

0

正則表達式是理想的做這樣的編輯。
除findstr有限的功能外,批次缺少RE支持。

這個包裝的powershell一個班輪將在cmd行或批處理文件中完成這項工作。

powershell -NoP -C "(gc application.yml) -Replace '(?<=bulletSpeed:)\d+','900'|sc application.yml" 

它採用lookbehind assertion與900

更換任何數量的以下bulletSpeed:要更換限制在以前的990,870,400使用該之一:

powershell -NoP -C "(gc application.yml) -Replace '(?<=bulletSpeed:)(990|870|400)','900'|sc application.yml" 
相關問題