我是批處理腳本的新手,很多事情對我來說仍然不是 100% 可以理解的。
我找到了一些關于子字串的來源(Source1,Source2),但我仍然不知道如何替換分隔符之前的字符。
我有這樣的檔案:
File 1 : rem1020aa_10.zip
File 2 : com12909aa_32.zip
File 3 : fig129439aa_324.zip
如您所見,我的字串可以有不同的長度。我想做的就是用其他東西替換“aa”。
更新 - 抱歉忘了提到我想在 _ 分隔符之前替換。
例如:rem1020 duh _10.zip
觀看我當前的代碼:
@echo off
setlocal enableDelayedExpansion
set arg1=%1
for /f "delims=" %%b in ('dir /b /s /a-d "C:\Test"') do (
set "arg1=%%~nxc"
echo !arg1:~-6,2!
)
我得到的結果:
09
43
0a
我知道在這種情況下它不起作用,因為長度不同,但這是我嘗試過的多個方法之間的一種方法。
我也嘗試了Source2的第一個答案,但我仍然找不到解決方法。
uj5u.com熱心網友回復:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=u:\your files"
SET "replaceme=aa"
SET "replacement=duh"
FOR /f "delims=" %%b IN ('dir /b /a-d "%sourcedir%\*" ') DO (
ECHO found filename "%%b"
rem store name part before "_" in `fileprefix
FOR /f "tokens=1*delims=_" %%q IN ("%%~nb") DO (
ECHO q=%%q r=%%r
SET "fileprefix=%%q"
rem is the 2-character string at the end of fileprefix "aa"? - note: /i means case-insensitive
IF /i "!fileprefix:~-2!"=="%replaceme%" (
ECHO %%q ends %replaceme%
ECHO so new name is !fileprefix!, except the last 2 characters replacement _ %%r
ECHO and extension is %%~xb
ECHO REN "%%b" "!fileprefix:~0,-2!%replacement%_%%r%%~xb"
)
)
ECHO ----------------------
)
GOTO :EOF
這應該展示我如何解決這個問題。這些步驟是echoed - 顯然,echo一旦理解了該方法,這些 es 就可以被洗掉。
請注意,也可以將其"%sourcedir%\*%replaceme%_*"用作檔案掩碼,這將減少檢測到的不符合所需標準的檔案名的發生率。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/491633.html
上一篇:如何在.csv檔案中批量創建的新列中包含帶有變數的新字串?
下一篇:根據列從文本檔案中洗掉重復行
