[英]windows batch script replace substring in a if condition
試圖將11/22/2016替換為11222016。為此,我嘗試了以下操作,並按預期工作。
set string=dd/mm/yyyy.
set find=/
set replace=
call set string=%%string:!find!=!replace!%%
echo %string%
輸出是ddmmyyyy
但是當我在if條件下嘗試此操作時,此操作無法按預期進行。
setlocal enabledelayedexpansion
set isDateFound=false
set string=dd/mm/yyyy.
if "%isDateFound%" == "false" (
echo %isDateFound%
set find=/
set replace=
call set string=%%string:!find!=!replace!%%
echo %string%
)
輸出dd / mm / yyyy
似乎延遲的表達在這里發揮了作用。 但我無法克服這一點。 如何替換if條件中的子字符串。
這是一種更好的方法:
@echo off
FOR /F "tokens=1-3" %%a IN ('WMIC Path Win32_LocalTime Get Day^,Month^,Year ^| findstr [0-9]') DO (
set "$Day=0%%a"
set "$Month=0%%b"
set "$Year=%%c"
)
echo %$Year%%$Month:~-2%%$Day:~-2%
月和日之前的前導0將自動添加。
您正在set呼叫中使用延遲擴展,因此在這種情況下,您需要通過!string!訪問值。 不是%string%,所以:
setlocal enabledelayedexpansion
set isDateFound=false
set string=dd/mm/yyyy.
if "%isDateFound%" == "false" (
echo %isDateFound%
set find=/
set replace=
call set string=%%string:!find!=!replace!%%
echo !string!
)
注意回聲!字符串! 代替echo%string%
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.