【问题标题】:How to change the value of a parameter in the batch file according to date?如何根据日期更改批处理文件中参数的值?
【发布时间】:2011-11-30 06:41:54
【问题描述】:

问题如下

我必须从服务器检索日志,因为我创建了一个名为“getServerLog.bat”的“.bat”文件,该文件的作用是获取放置在服务器上的实际日志文件。即“getServerLog.bat”的内容包含服务器上存储实际日志文件的位置,但服务器上的日志文件具有以下名称格式“yyyy_mm_dd.stderrout.log”,例如今天的 2011_11_30.stderrout.log文件并且此名称是自动生成的,因此在 bat 文件“getServerLog.bat”中,我必须参数化名称,以便它始终检索最新文件。更明确的信息在这里是 bat 文件的内容

"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /command "option batch on" "option confirm off" "open gtp:gtp@10.72 .141.68" "get /home/gtp/installed/jetty-6.1.18/logs/2011_08_25.stderrout.log C:\Users\prpandey\Desktop\gtp.log" "退出"

我需要参数化最后一个变量 2011_08_25.stderrout.log 以获取最新的记录或日志。请帮我解决这个问题。

提前致谢。

【问题讨论】:

    标签: windows batch-file cmd batch-processing


    【解决方案1】:

    尽管这看起来很简单,正如@Burrhus 已经展示的那样,但不同的日期格式使它变得非常困难。

    使用 WMIC 的另一种方法显示在 SO 中的这篇文章中, Batch script date into variable

    试试这个代码

    @ECHO OFF
    FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
       SET FD=%%F_%%D_%%A
    )
    ECHO logs/%FD%.stderrout.log
    

    【讨论】:

      【解决方案2】:

      根据您的日期格式 - 我的是丹麦语 yy-mm-dddd,您可以这样做。

      set fileDate=%date:~6,4%_%date:~3,2%_%date:~0,2%
      "C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /command "option batch on" "option confirm off" "open gtp:gtp@10.72.141.68" "get /home/gtp/installed/jetty-6.1.18/logs/%fileDate.stderrout.log C:\Users\prpandey\Desktop\gtp.log" "exit"
      

      当然这应该根据日期格式进行更改。

      【讨论】:

      • 感谢您指出的修改,但您能告诉我如何将其更改为这种格式 yyyy_mm_dd 我将不胜感激
      • 这取决于您使用的日期格式。代码实际上只是获取字符串值并生成三个子字符串
      【解决方案3】:

      在我的系统上,Aacini 的代码在 ('DATE

      如果我将其更改为 ('echo.%DATE%>NUL'),它稍后会在某个地方失败 (XP SP3)。不管系统当前的日期格式为何,这段代码应该可以工作的一些解释会很棒。

      【讨论】:

        猜你喜欢
        • 2022-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多