Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Csv 批处理文件能否告诉程序将文件另存为?(若有,如何进行)_Csv_Batch File_Logging_Automation - Fatal编程技术网

Csv 批处理文件能否告诉程序将文件另存为?(若有,如何进行)

Csv 批处理文件能否告诉程序将文件另存为?(若有,如何进行),csv,batch-file,logging,automation,Csv,Batch File,Logging,Automation,我目前正在尝试为工作自动化文件传输过程,我不知道如何让程序保存文件 目前,我已经创建了一个工作批,用于将日志文件从创建点移动到正确的文件夹,并将其重命名以包含日期。然后使用start函数打开该文件。到目前为止,所有这些都有效 现在,我需要打开的文件转到文件>另存为>保存 它不需要更改名称。 打开它的程序只保存为CV,这是我的最终目标 除非有人知道将日志文件更改为CSV文件的更简单方法,否则我也会接受这个选项。在批处理文件中 Windows 7计算机 编辑1* 当数据在excel中打开时,使用re

我目前正在尝试为工作自动化文件传输过程,我不知道如何让程序保存文件

目前,我已经创建了一个工作批,用于将日志文件从创建点移动到正确的文件夹,并将其重命名以包含日期。然后使用start函数打开该文件。到目前为止,所有这些都有效

现在,我需要打开的文件转到文件>另存为>保存

它不需要更改名称。 打开它的程序只保存为CV,这是我的最终目标

除非有人知道将日志文件更改为CSV文件的更简单方法,否则我也会接受这个选项。在批处理文件中

Windows 7计算机

编辑1*

当数据在excel中打开时,使用ren命令将其重命名为csv会将其变成垃圾。通过程序使日志成为csv,可以使数据以正确的格式显示。我需要知道如何告诉程序另存为。由于没有快捷方式,我想我需要一种方法来告诉它按下:altF down(箭头键)enter

我意识到像autoit这样的程序能够执行该功能,但由于公司计算机的限制,它们不会成为一个选项

进一步的研究让我找到了这篇文章: 但我无法找到一种方法让这个想法在我的案例中发挥作用。也许它会给人一个离开的机会,尽管他更了解它

编辑2* 这看起来可能会很难看,但如果有人也明白这一点,它可能会证明对我所需要的非常有用。

编辑3* 很抱歉问这么宽泛的问题,但谢谢你的帮助

到目前为止,蝙蝠非常简单:

Move/-y“C:\Users\xxx\Desktop\ASI测试文件夹\Station 5\Station 5 Log\Station 5 Log.Log”“O:\LAB\ASI\Logs by Date\Week 2015-4-13”

ren“O:\LAB\ASI\Logs by Date\Week 2015-4-13\Station 5 Log.Log”“Station 5 Log%日期:~4,2%-%Date:~7,2%-%Date:~10,4%.Log”

启动“”,C:\Users\xxx\Desktop\ASI测试文件夹\Station 5\Station 5 Log\Station 5 Log.Log

停顿


我正在尝试将密钥发送到RSView以使其保存程序。这将使其成为一个CSV,可以作为EXCEL文档打开,我已经在其中创建了一个宏,可以将该数据转换为更可读/可图表的格式


如果我们可以将其保存为CSV,我可以再次使用start命令在excel中打开它,然后运行宏。

您应该能够使用命令行开关来执行此操作,而不是永远打开文件


“RSView Enterprise File Viewer.exe”/md process.log process.csv

经过大量研究,我终于解决了我的问题

我最初问题的简单答案是: 批处理文件能告诉程序另存为吗? 是的/有点像

虽然批处理不能直接向传统意义上的另一个程序发送密钥命令,但有一些解决方法。如果操作得当,可以在同一批处理文件中包含多个脚本语言。您可以在批处理中使用java或vbs语言向程序发送密钥。为了另存为,您需要选择active window,然后发送键命令,该命令将进入“另存为”功能。例如:Alt+F Down回车。这将告诉程序打开“文件”菜单,按适当的次数选择“另存为”,然后按Enter键通知程序打开“另存为”菜单,然后再次回车将通知程序保存

如果你对脚本部分不是很在行,比如我。那么创建一个执行所有移动/重命名/打开操作的批处理文件,并使用wsf文件发送密钥可能会更容易。wsf文件与批处理文件非常相似,但它是用java或vbs编写的。它比在批处理中同时添加vbs和普通脚本要简单。 这就是我解决问题的方法。 三个文件: 当我需要发送密钥时,通知wsf文件打开的一批 两个wsf文件,用于向程序发送密钥所需的两个独立时间。 (每个打开的程序需要一个wsf)

以下是每个文件的代码:

批次:

    Move /-y "C:\Users\xxxx\Desktop\ASI Test Folder\Station 5\Station 5 Log\Station 5 Log.log" "O:\LAB\ASI\Logs by Date\Week 2015-4-13"
    timeout /t 1
    ren "O:\LAB\ASI\Logs by Date\Week 2015-4-13\Station 5 Log.log" "Station 5 Log %date:~4,2%-%date:~7,2%-%date:~10,4%.log"
    timeout /t 1

    start "" "O:\LAB\ASI\Logs by Date\Week 2015-4-13\Station 5 log %date:~4,2%-%date:~7,2%-%date:~10,4%.log
    timeout /t 1

    start "" "C:\Users\xxxx\Desktop\Working BATS\Send Keys test.wsf"
    timeout /t 5

    start "" "O:\LAB\ASI\Logs by Date\Week 2015-4-13\Station 5 Log %date:~4,2%-%date:~7,2%-%date:~10,4%.csv
    timeout /t 4

    start "" "C:\Users\xxxx\Desktop\Working BATS\Excel Macro.wsf
    pause
非常基本的东西。超时功能用于解释打开文件时的延迟。虽然不需要每次移动/重命名,但有时在下一次操作完成时操作不会完成。因此,这确保了每次操作都有效。 WSF(发送密钥测试):


设置WshShell=WScript.CreateObject(“WScript.Shell”)
WshShell.app激活“RSView企业文件查看器”
WScript.Sleep 100
WshShell.SendKeys“%f”
WScript.Sleep 500
WshShell.SendKeys“{Down}”
WScript.Sleep 500
WshShell.SendKeys“{Down}”
WScript.Sleep 500
WshShell.SendKeys“{Enter}”
WScript.Sleep 500
WshShell.SendKeys“{Enter}”
WScript.Sleep 500
应用程序活动窗口非常重要。它确保将密钥发送到正确的窗口。这是用于让RSView将日志文件保存为CSV的文件

WSF2(Excel宏):


设置WshShell=WScript.CreateObject(“WScript.Shell”)
WshShell.app激活“Excel”
WScript.Sleep 100
WshShell.SendKeys“^u”

希望这能帮助任何遇到与我类似问题的人。我这里的关键是找出如何向程序发送密钥。

将其重命名为.csv怎么样?或者我理解错了你的问题吗?是的,一个windows应用程序可以“对话”“通常,发送到另一个应用程序,并发出类似的命令。可能就是您要查找的。在测试运行时,.log文件由自动化进程自动生成。我没有权限让它从一开始就进行不同的保存。他们用来打开日志文件并转换为CSV的程序是RSView Enterprise File Viewer。我不知道为什么他们会这么做,但它很有效,可以用来快速方便地将.log保存为.csv。我正试图让这个漫长、重复、愚蠢的过程对那些不了解它的人来说尽可能容易
    <package>
    <job id="vbs">
    <script language="VBScript">
 set WshShell = WScript.CreateObject("WScript.Shell")
 WshShell.AppActivate "RSView Enterprise File Viewer"
     WScript.Sleep 100
     WshShell.SendKeys "%f"
     WScript.Sleep 500
     WshShell.SendKeys "{Down}"
     WScript.Sleep 500
     WshShell.SendKeys "{Down}"
     WScript.Sleep 500
 WshShell.SendKeys "{Enter}"
     WScript.Sleep 500
     WshShell.SendKeys "{Enter}"
     WScript.Sleep 500
 </script>
     </job>
     </package>
    <package>
    <job id="vbs">
    <script language="VBScript">
 set WshShell = WScript.CreateObject("WScript.Shell")
 WshShell.AppActivate "Excel"
     WScript.Sleep 100
     WshShell.SendKeys "^u"
 </script>
     </job>
     </package>