【问题标题】:Batch script to generate a random date to be integrated into a command that applies to a batch of files用于生成随机日期的批处理脚本,以集成到适用于一批文件的命令中
【发布时间】:2022-08-17 23:39:04
【问题描述】:

如果有人可以帮助我,我很难过

我正在使用timestomper 更改文件的日期,我想随机化每个文件的日期以获得随机排序。

这是我到目前为止所做的,脚本肯定很糟糕,但我尝试过......

    @echo off & setlocal EnableDelayedExpansion
    Set /a _day=(!RANDOM!*25/32768)+1
    Set /a _month=(!RANDOM!*12/32768)+1
    Set /a _hours=(!RANDOM!*22/32768)+1
    Set /a _minutes=(!RANDOM!*60/32768)+1
for /r %%v in (*.jpg) do (
    timestomper -z %_month%-%_day%-2022 %_hours%:%_minutes%:01 -p \"%%v\"
    
)

我的脚本的输出:

a.jpg 04/12/2010 10:20
b.jpg 04/12/2010 10:20
c.jpg 04/12/2010 10:20
d.jpg 04/12/2010 10:20

我想要的是为每个文件随机生成的日期:

a.jpg 04/12/2010 10:20
b.jpg 10/02/2001 22:02
c.jpg 01/02/2004 15:27
d.jpg 12/20/2008 08:13

timstomper 需要的是文件的日期和路径:

timestomper -z 10-20-1994 14:2:01 -p C:\\full\\path

我希望在我的要求中明确

  • 问题是你第一的生成一个随机时间戳,然后使用相同的时间戳所有文件!您必须将for /r %%v in (*.jpg) do ( 命令移到第一个Set /a _day= 命令之前,并用感叹号更改timestomper 调用中的百分比,当然\"%%v\" 部分除外! PS - 我建议你使用更短更简洁的问题标题,例如“问题生成随机数”
  • 谢谢您的回答 !我尝试了您的建议,我不知道我是否做错了,但它不起作用。我将for /r %%v in (*.jpg) do timestomper -z !_month!-!_day!-2022 !_hours!:!_minutes!:01 -p \"%%v\" 放在变量之前并将我的% 更改为!,但什么也没发生。该脚本从字面上执行此操作:timestomper -z !_month!-!_day!-2022 !_hours!:!_minutes!:01 -p \"a.jpg\" 而不应用随机数。好的,我会将您的建议应用于其他问题
  • 请看下面我的回答...

标签: windows batch-file cmd


【解决方案1】:

好的。这是您的原始代码:

    @echo off & setlocal EnableDelayedExpansion
    Set /a _day=(!RANDOM!*25/32768)+1
    Set /a _month=(!RANDOM!*12/32768)+1
    Set /a _hours=(!RANDOM!*22/32768)+1
    Set /a _minutes=(!RANDOM!*60/32768)+1
for /r %%v in (*.jpg) do (
    timestomper -z %_month%-%_day%-2022 %_hours%:%_minutes%:01 -p "%%v"

)

在我的建议中,我说:“您必须将for /r %%v in (*.jpg) do ( 命令移到第一个Set /a _day= 命令之前,并用感叹号更改timestomper 调用中的百分比,当然“%%v”部分除外!”

让我们逐步按照这些说明进行操作:

“您必须在第一个 Set /a _day= 命令之前移动 for /r %%v in (*.jpg) do ( 命令”

那是:

    @echo off & setlocal EnableDelayedExpansion
                                              to here <----+
    Set /a _day=(!RANDOM!*25/32768)+1                      |
    Set /a _month=(!RANDOM!*12/32768)+1                    |
    Set /a _hours=(!RANDOM!*22/32768)+1                    |
    Set /a _minutes=(!RANDOM!*60/32768)+1                  |
for /r %%v in (*.jpg) do (                    from here >--+
    timestomper -z %_month%-%_day%-2022 %_hours%:%_minutes%:01 -p "%%v"

)

...给:

    @echo off & setlocal EnableDelayedExpansion
for /r %%v in (*.jpg) do (
    Set /a _day=(!RANDOM!*25/32768)+1
    Set /a _month=(!RANDOM!*12/32768)+1
    Set /a _hours=(!RANDOM!*22/32768)+1
    Set /a _minutes=(!RANDOM!*60/32768)+1
    timestomper -z %_month%-%_day%-2022 %_hours%:%_minutes%:01 -p "%%v"

)

然后“用感叹号更改 timestomper 调用中的百分比,“%%v”部分除外”

    @echo off & setlocal EnableDelayedExpansion
for /r %%v in (*.jpg) do (
    Set /a _day=(!RANDOM!*25/32768)+1
    Set /a _month=(!RANDOM!*12/32768)+1
    Set /a _hours=(!RANDOM!*22/32768)+1
    Set /a _minutes=(!RANDOM!*60/32768)+1
    timestomper -z !_month!-!_day!-2022 !_hours!:!_minutes!:01 -p "%%v"

)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2021-10-04
    相关资源
    最近更新 更多