我在內容編輯方面需要一些幫助
我的目標是使用批處理腳本并讓它id_?找到在 txt 檔案中找到的所有內容
并將字母從大寫更改為小寫
這是我的腳本
編輯檔案.bat
@echo off
set "replace=id_A"
set "replaced=id_a"
set "source=2Folder\File5002014.txt"
set "target=3Folder\File50020141.txt"
setlocal enableDelayedExpansion
(
for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %source%\*.txt') do (
set "line=%%b"
if defined line set "line=!line:%replace%=%replaced%!"
echo(!line!
)
) > %target%
endlocal
我設法讓它找到一個模式
,上面的腳本確實有效,并將編輯 txt 檔案中的內容,但只會編輯匹配的名稱
我確實嘗試更改它以讀取任何檔案但無法弄清楚
我已經結束100 txt files并且都有不同的id_?內容
我需要做的是
FIND
id_AaPPle
id_A
id_BeRRy
id_B
id_CoRn
id_c...etc
REPLACE
id_apple
id_a
id_berry
id_b
id_corn
id_c...etc
請記住,在 id_ 之后我有 100 多個不同的單詞?
我需要它來掃描在 2Folder 中找到的任何 txt 檔案,并且只編輯 2Folder 中的檔案
這是我嘗試過的,但失敗了我的第一次嘗試是讓它只編輯 2Folder 中的檔案
編輯檔案.bat
@echo off
set "replace=id_a"
set "replaced=id_A"
set "source=2Preparing\File5002014.txt"
setlocal enableDelayedExpansion
(
for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %source%\*.txt') do (
set "line=%%b"
if defined line set "line=!line:%replace%=%replaced%!"
echo(!line!
)
) >> %source%
endlocal
我能弄清楚如何編輯更多的唯一方法id_?是重復這樣的代碼
@echo off
set "replace1=id_A"
set "replaced1=id_a"
set "source=2Preparing\File5002014.txt"
setlocal enableDelayedExpansion
(
for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %source%\*.txt') do (
set "line=%%b"
if defined line set "line=!line:%replace1%=%replaced1%!"
echo(!line!
)
) > %target%
endlocal
set "replace2=id_aPPle"
set "replaced2=id_apple"
set "source=2Preparing\File5002014.txt"
setlocal enableDelayedExpansion
(
for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %source%\*.txt') do (
set "line=%%b"
if defined line set "line=!line:%replace2%=%replaced2%!"
echo(!line!
)
) > %target%
endlocal
好的這一套
set "replace1=id_A"
set "replaced1=id_a"
是找到everyid_A并將其更改為id_a現在不是每個單詞都混合了大寫和小寫字母
例如我在id_Grapes這里有單詞我只需要擔心G
所以我會做一個腳本來做到這一點
set "replace1=id_G"
set "replaced1=id_g"
對此的任何幫助都會很棒
謝謝
這是它在我的檔案中的外觀
File 1.txt
{
"upma": "id_Apples",
"upnn": 20,
"upfb": true,
"upcu": false
}
{
"upma": "id_APpleS",
"upnn": 25,
"upfb": false,
"upcu": false
}
File 2.txt
{
"upma": "id_BeRRy",
"upnn": 10,
"upfb": true,
"upcu": false
}
{
"upma": "id_BerRy",
"upnn": 20,
"upfb": false,
"upcu": false
}
File 3.txt
{
"upma": "id_Corn",
"upnn": 29,
"upfb": true,
"upcu": false
}
{
"upma": "id_Corn",
"upnn": 40,
"upfb": false,
"upcu": false
}
幾乎每個 file.txt 都會重復很多次
我的結果
File 1.txt
{
"upma": "id_apples",
"upnn": 20,
"upfb": true,
"upcu": false
}
{
"upma": "id_apples",
"upnn": 25,
"upfb": false,
"upcu": false
}
File 2.txt
{
"upma": "id_berry",
"upnn": 10,
"upfb": true,
"upcu": false
}
{
"upma": "id_berry",
"upnn": 20,
"upfb": false,
"upcu": false
}
File 3.txt
{
"upma": "id_corn",
"upnn": 29,
"upfb": true,
"upcu": false
}
{
"upma": "id_corn",
"upnn": 40,
"upfb": false,
"upcu": false
}
uj5u.com熱心網友回復:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
rem The following settings for directory names are those
rem that I use for testing and deliberately include spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.
SET "sourcedir=u:\your files"
SET "destdir=u:\your results"
SET "alphabet=a b c d e f g h i j k l m n o p q r s t u v w x y z"
SET "indent= "
FOR %%e IN ("%sourcedir%\F*") DO (
rem filename in %%e
(
FOR /f "usebackqdelims=" %%y iN ("%%e") DO (
rem raw line in %%y
FOR /f "tokens=1*delims=: " %%b iN ("%%y") DO (
IF "%%~b"=="upma" (
CALL :lower %%c
ECHO %indent%%%b: "!lowered!",
) ELSE ECHO %%y
)
)
)>"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/529338.html
標籤:批处理文件
