我正在撰寫一個簡單的批處理腳本,允許用戶輸入開始日期和結束日期,并傳輸名稱中包含日期的檔案。它需要像“20220215”這樣的年月日。例如,用戶輸入“20211110”,然后輸入“20211215”,它會抓取 2021 年 11 月 11 日到 2021 年 12 月 15 日的檔案。我試圖從輸入字串中獲取日期和月份,但問題是值 '08 ' 和 '09' 因為十六進制值等而給腳本帶來麻煩。所以我為檔案日做案例,因為它在字串的末尾,所以效果很好。問題是月份。這是代碼:
REM Works fine
IF !temp_var:~6! == 08 (
SET /A file_day = 8
) ELSE IF !temp_var:~6! == 09 (
SET /A file_day = 9
) ELSE (
SET /A file_day = !temp_var:~6!
)
REM Crashes script
IF !temp_var:~4, -2! == 08 (
SET /A file_month = 8
) ELSE IF !temp_var:~4, -2! == 09 (
SET /A file_month = 9
) ELSE (
SET /A file_month = !temp_var:~4, -2!
我運行腳本時收到的錯誤是
-2 was unexpected at this time.
我發現它只是在月份塊的第一個 IF 陳述句中。但是每次我搜索如何從變數中獲取數字時,它都會使用 %var:~#:#% 格式。
我已經考慮切換到另一種語言或方式來做到這一點,但我認為我試圖自動化的任務很簡單,可以通過將批處理放在一起運行一些命令來實作哈哈。
謝謝您的幫助!
uj5u.com熱心網友回復:
該程式生成一系列連續的日期:
@echo off
setlocal
echo Date format: YYYYMMDD
set /P "startDate=Enter start date: "
set /P "endDate=Enter end date: "
echo/
echo %startDate%
set /A "YYYY=%startDate:~0,4%, m=1%startDate:~4,2%-100, d=1%startDate:~6%-100"
:nextDate
set /A "d =1, nextMon=!(d-(31 ((m m/8)&1)-!(m-2)*(2-!(YYYY%%4)))), d=d*!nextMon nextMon, m =nextMon, nextYear=!(m-13), m=m*!nextYear nextYear, YYYY =nextYear, MM=100 m, DD=100 d"
set "nextDate=%YYYY%%MM:~1%
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/428970.html
