gpt4 book ai didi

powershell - 将批处理脚本转换为Powershell脚本

转载 作者:行者123 更新时间:2023-12-03 01:15:57 25 4
gpt4 key购买 nike

我目前有这个脚本,可以作为计划任务运行:

@echo on
START /WAIT c:\windows\system32\Robocopy.exe "D:\folder" "\\192.168.2.87\folder" /E /MT:20 /R:50 /W:10 /V /ETA /LOG:c:\robocopy.txt

由于两个原因,我想将其转换并作为PowerShell脚本运行:
  • 更现代的
  • 最重要的原因是我想将带有日期和时间的日志存储为C:\robocopylog3004201510214043.txt,而我从字面上没有找到有关如何从批处理脚本中剥离“:”和“/”等字符的信息,而且我知道PowerShell可以。

  • 最后一个数字不是随机的。是日期和时间。

    例如,日期为“30/04/2015”(将其删除会留下30042015)
    例如,时间为“10:21:40,43”(将其条纹会留下10214043)

    因此它将保留一个文件名robocopylog3004201510214043.txt

    最佳答案

    在运行外部程序方面,CMD和PowerShell之间几乎没有区别。我建议使用 call 运算子(&),即使在这种特殊情况下并非必须使用。

    & c:\windows\system32\Robocopy.exe "D:\folder" "\\192.168.2.87\folder" /E /MT:20 /R:50 /W:10 /V /ETA /LOG:c:\robocopy$(Get-Date -format 'ddMMyyyyHHmmss').txt
    robocopy无论如何都是同步运行的,因此不需要“等待”指令。

    number format ddMMyyyyHHmmss产生由日,月,年,小时,分钟和秒组成的时间戳。我不建议同时加上毫秒,因为您可能不会在同一秒内多次运行robocopy。如果必须包含毫秒,请将 ff附加到格式字符串(或 ffff等,具体取决于所需的位数)。不过,您可能要考虑使用ISO日期格式( yyyyMMddHHmmss),因为这样可以简化按创建顺序列出日志文件的过程。

    至于替换批处理脚本中的字符,可以通过 string replacements来完成:
    C:\>echo %DATE:/=%
    30042015

    C:\>echo %TIME::=_%
    10_01_22.39

    关于powershell - 将批处理脚本转换为Powershell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29961656/

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