我正在嘗試為特定情況生成多個檔案,但我的回圈陳述句無法正常作業。批處理檔案具有三個條目,例如:
Unit code = e.g (095)
Initial date = e.g (20211001)
Final date = e.g (20211010)
我期待 10 個檔案,像這樣。因為從初始日期到最終日期我們有 10 天,在這個例子中,但可能是 15、20 ...
2v09520211001.rep
2v09520211002.rep
2v09520211003.rep
2v09520211004.rep
我的代碼
Echo off
cls
color 1f
title Bat automatiza 2V
:menu
Time /t
Date /t
echo *********************************
echo * Automatize files generate *
echo *********************************
set /p op= Unit code
set /p op1= Initial date
set /p op2= Final date
for(int i = %op1%; i < %op2%; i ) {
do
echo > 2v%op%%op1%%op2%.rep
}
先感謝您。
uj5u.com熱心網友回復:
這是一個完整的代碼,用于從文本檔案讀取資料或提示批處理檔案的用戶輸入資料并在使用字串創建具有適當檔案名的空檔案之前驗證字串。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem Undefine the three environment variables used to hold the data.
set "UnitCode="
set "InitialDate="
set "FinalDate="
rem Load the data from file Data.txt in batch file directory if existing.
if exist "%~dp0Data.txt" for /F "usebackq tokens=1,2* delims== " %%G in ("%~dp0Data.txt") do set "%%G%%H=%%~I"
if defined UnitCode set "UnitCode=%UnitCode:"=%"
if defined InitialDate set "InitialDate=%InitialDate:"=%"
if defined FinalDate set "FinalDate=%FinalDate:"=%"
rem Check each value and prompt user on value not defined or invalid.
call :CheckValue UnitCode "unit code" ".[0123456789][0123456789]*." 0 "%UnitCode%"
call :CheckValue InitialDate "initial date in format 20yyMMdd" ".20[0123456789][0123456789][01][0123456789][0123][0123456789]." 1 "%InitialDate%"
call :CheckValue FinalDate "final date in format 20yyMMdd" ".20[0123456789][0123456789][01][0123456789][0123][0123456789]." 1 "%FinalDate%"
rem Check if the initial date is before or equal the final date.
if %InitialDate% LEQ %FinalDate% goto CreateFiles
echo ERROR: The initial date %InitialDate% is after the final date %FinalDate%!
goto :EOF
:CheckValue
if "%~5" == "" goto GetValue
set "Value=%~5"
goto ValidateValue
:GetValue
set "Value="
set /P "Value=Please enter %~2: "
if not defined Value goto GetValue
set "Value=%Value:"=%"
if not defined Value goto GetValue
:ValidateValue
setlocal EnableDelayedExpansion
rem The value must match the regular expression or it is invalid.
echo "!Value!"| %SystemRoot%\System32\findstr.exe /R /X %3 >nul
if errorlevel 1 (
echo ERROR: !Value! is not valid for %~2^^!
endlocal
goto GetValue
)
endlocal
set "%1=%Value%"
if %4 == 0 goto :EOF
rem Additional checks for validating a date value.
set "Year=%Value:~0,4%"
set /A Month=1%Value:~4,2% - 100
set /A Day=1%Value:~6,2% - 100
if %Month% == 0 goto InvalidDate
if %Month% GTR 12 goto InvalidDate
if
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322990.html
標籤:批处理文件
