Hiểu biết của tôi là để có được ngày từ một tệp được chuyển vào một chương trình con làm đối số, bạn phải đặt lại đối số đó làm biến trong chương trình con. Điều này có đúng không? Điều này không thực hiện kể từ khi tôi, vì vậy tôi tự hỏi nếu tôi không hoàn toàn hiểu những gì đang xảy ra. Tôi có thể sử dụng đối số được truyền trong thực tế bất kỳ mã chương trình con nào khác ngoại trừ việc trích xuất ngày tháng.chương trình con của tập lệnh batch: Truyền đối số
set setupEXE=setup.exe
CALL :SUB_CheckCorrectDate %setupEXE%
GOTO EOF
::----------------------------------
:SUB_CheckCorrectDate
set filename=%1%
:: SUCCESSFUL
for %%x in (%filename%) do set FileDate=%%~tx
@For /F "tokens=1-3 delims=-/ " %%A in ('@echo %FileDate%') do @(
Set file_Month=%%A
Set file_Day=%%B
Set file_Year=%%C
)
:: GET ERROR
for %%x in (%1%) do set FileDate=%%~tx
@For /F "tokens=1-3 delims=-/ " %%A in ('@echo %FileDate%') do @(
Set file_Month=%%A
Set file_Day=%%B
Set file_Year=%%C
)
GOTO:EOF
:: ------------------
:EOF
+1, Nhưng phần '% 1% đề cập đến một biến không tồn tại tên 1' rõ ràng là sai. Nó cũng đề cập đến '% 1' và sau đó mở rộng phần trăm mới bắt đầu, nhưng không thành công vì không có phần trăm đóng cũng như chữ số để truy cập tham số. Btw. Nó không thể mở rộng một variablename bắt đầu với một chữ số với một phần trăm mở rộng (bên trong tập tin batch) – jeb