【问题标题】:How to pass parameters to built in Windows commands via AutoHotKey?如何通过 AutoHotKey 将参数传递给内置的 Windows 命令?
【发布时间】:2023-03-07 23:10:01
【问题描述】:

我正在尝试创建一个简单的文件合并工具来将拆分日志文件合并到一个文本文件中。

FileSelectFolder, folder, \\Myserver\Data\
InputBox, filename, Save File,Please type the name you will call the merged file.`n The file will be saved in the folder "merged" of the same root directory as its "part files" are located., , , , , , , ,merged_file.txt
if errorlevel = 1
exitApp
IfExist, %folder%\merged\%filename%
MsgBox, 4, File Overwrite -or- Append?, The file already exists.  Do you want to append to this file?  `nNote:  If you select "No" the existing file will be replaced during this process.
ifmsgbox, no
FileDelete %folder%\merged\%filename%
FileCreateDir, %folder%\merged
IfExist %folder%\merged\%filename%_file_list.txt
FileDelete %folder%\merged\%filename%_file_list.txt
Runwait, %COMSPEC% /c copy /k %folder%\*.log %folder%\merged\%filename% 
ExitApp

我不想使用 AHK filereadfileappend,因为日志文件相当大 ~40mb。

上面的代码不会产生任何错误,但也不会产生任何文件。 我尝试将 " 添加到参数中,但没有成功。

【问题讨论】:

    标签: windows file cmd autohotkey


    【解决方案1】:

    其实很简单:

    Loop, Read, C:\FileToReadFrom.txt, C:\FileToAddTo.txt
        FileAppend, `r`n%A_LoopReadLine% 
    

    这样您一次只能将一行加载到 RAM 中。

    如果您想了解更多:
    Loop, Read file contents
    FileAppend

    【讨论】:

      【解决方案2】:

      好吧,再来一张!

      事实证明,您确实需要在命令字符串中引用您的路径以用于 COMSPEC。

      我之前也正确地指出,复制命令没有 /K 开关或选项。有 Compsec 开关 /K 保持终端打开和 /c 表示关闭终端。

      您的语法也与 Copy 错误。为了将文件与 Copy 连接,您需要执行以下操作:

      Copy mergedfile.txt+file2merge.txt newmergedfile.txt
      

      但我建议您改用 Type 来连接文本文件:

      RunWait, %COMSPEC% /c type "%folder%\*.log" >> "%folder%\merged\%filename%"
      

      【讨论】:

      • 是的,看起来复制命令没有 /k 开关。把它拿出来,也许它现在可以工作了。您是否查看过 AHK 等效命令 FileCopy?
      • 我尝试了 FileAppend 和 FileCopy,不幸的是,我尝试合并的文件太大,FileRead 无法存储在内存中并使用 FileAppend 追加。使用 FileCopy 它只将一个文件复制为合并文件,不会将文件夹中的所有文件附加为一个大文件。
      • 好吧,这次我测试了它,它有效,找到了连接文件的最佳方法。
      • 您能否将此标记为已回答?我知道这是正确的,因为我测试了代码。
      猜你喜欢
      • 2012-10-01
      • 2020-09-12
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多