gpt4 book ai didi

batch-file - 批处理脚本子例程 : Passing arguments

转载 作者:行者123 更新时间:2023-12-02 11:29:04 25 4
gpt4 key购买 nike

我的理解是,为了从作为参数传递到子例程的文件中获取日期,您必须将该参数重新设置为子例程中的变量。它是否正确?这对我来说并不重要,所以我想知道我是否不完全理解发生了什么。除了日期提取之外,我几乎可以在任何其他子例程代码中使用传入的参数。

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访问参数,而不是%i%

参数变量与 FOR 变量具有相同的修饰符,因此您可以使用 %~t1

无需在 FOR/F 中执行命令。使用 in ("string") 处理字符串文字更简单。

不需要:EOF标签。每个脚本都有一个隐式的 :eof。我喜欢使用 exit/b 来代替。

@echo off
setlocal
set "setupEXE=setup.exe"

call :SUB_CheckCorrectDate "%setupEXE%"
exit /b

::----------------------------------

:SUB_CheckCorrectDate
set "filename=%~1"
for /F "tokens=1-3 delims=-/ " %%A in ("%~t1") do (
set "file_Month=%%A"
set "file_Day=%%B"
set "file_Year=%%C"
)
exit /b

关于batch-file - 批处理脚本子例程 : Passing arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com