【问题标题】:Random file as second parameter in command prompt?随机文件作为命令提示符中的第二个参数?
【发布时间】:2014-09-08 15:25:01
【问题描述】:

我有一个字符串

FOR %%A in (SRCdocs\*.doc) DO doc2rtf -f addon\format1.fmt -file "%%A" -out "%%A.rtf"

此字符串处理子文件夹“SRCdocs”中的所有源 *.doc 文件,应用一个格式文件(来自子文件夹“addon”的 format1.fmt)。结果,我将所有 doc 文件转换为 rtf,只应用了一个格式过滤器 (format1.fmt)

我需要编辑此行以实现每个 doc 到 rtf 转换的鼓掌随机过滤器。

怎么做?

谢谢!

【问题讨论】:

    标签: batch-file random command-line parameters command-prompt


    【解决方案1】:
    @echo off
        setlocal enableextensions disabledelayedexpansion
    
        set "count=0"
        for /f "tokens=1,* delims=:" %%a in ('dir /b /a-d "addon\*.fmt"^|findstr /n "^"') do (
            set "format[%%a]=%%b"
            set "count=%%a"
        )
    
        for %%a in ("SRCdocs\*.doc") do (
            setlocal enabledelayedexpansion
            set /a "format=!random! %% %count% + 1"
            for %%b in ("!format!") do for %%c in ("!format[%%~b]!") do (
                endlocal
                echo doc2rtf -f "addon\%%~c" -file "%%~fa" -out "%%~fa.rtf"
            )
        )
    

    .fmt 文件列表加载到内存中的数组中。现在,对于每个输入 .doc 文件,从 .fmt 文件列表中选择一个随机元素。

    doc2rtf 命令只回显到控制台。如果输出正确,去掉echo命令。

    【讨论】:

      【解决方案2】:

      如果我理解正确,您希望 -out 之后的文件名是随机的。我假设像 fred.doc 这样的东西被输出到 fred12345.rtf。

      您要查找的是%RANDOM% 变量,它提供了一个介于 0 和 32767 之间的随机数。由于您处于循环中,因此您还必须使用延迟扩展(否则您将得到相同的数字每次——也许没关系,但我假设不是)。

      所以你的批处理文件必须在你的循环之前包含这个:

      setlocal enabledelayedexpansion
      

      然后在你的FOR 声明中你会这样做:

      FOR %%A in (SRCdocs\*.doc) DO doc2rtf -f addon\format1.fmt -file "%%A" -out "%%A!RANDOM!.rtf"
      

      如果您希望此特定运行中的所有文件都使用相同的随机数,只需使用 %RANDOM% 而不是 !RANDOM!

      顺便说一句,如果您使用括号并将其分成多行,那么您的代码会更容易阅读:

      FOR %%A in (SRCdocs\*.doc) DO (
          doc2rtf -f addon\format1.fmt -file "%%A" -out "%%A.rtf"
      )
      

      在功能上没有什么不同,但我觉得它更容易阅读。

      【讨论】:

      • 亲爱的托尔坎!非常感谢你!我的任务有点不同。对不起,我的英语不好。我需要从目录“addon”中获取随机格式*.fmt 文件来处理每个转换过程。例如 - 此函数必须先获取 doc 文件,然后应用随机格式 *.fmt 文件,然后输出文件必须与源 doc 文件相同,但转换为 rtf。我怎样才能做到这一点?如何应用随机过滤器来转换每个文件?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 2016-03-20
      相关资源
      最近更新 更多