草庐IT

用于复制和修改包含重定向字符的文件的 Windows 批处理脚本

我们正在尝试将bashshell脚本转换为Windows批处理脚本。我们将这些脚本与我们的软件产品一起提供,我们不能假设客户将拥有或能够下载sed/awk/cygwin或任何其他非标准工具。因此,该脚本必须适用于Windows开箱即用的任何工具。最低目标平台是WindowsXPSP2。此脚本是从另一个批处理脚本调用的。脚本的一部分需要在文件中搜索特定字符串并修改该字符串。在bash中,这很容易。我们在Windows批处理脚本中采用的方法是逐行遍历文件。如果某行不包含目标字符串,我们会按原样将其回显到临时文件。如果一行包含目标字符串,我们会将硬编码字符串回显到临时文件。问题是输入文件的某

windows - 为什么从命令行启动时 Excel 在退出时抛出异常?

我有一个简单的Excel文件,它在数据库打开时查询数据库,然后自动关闭。如果我在Windows资源管理器(我运行的是WindowsXP和Excel2002)中双击文件打开它,它工作正常。但是,如果我使用Excel"C:\DataUpdate.xls"从Start>Run或从Shell在单独文件中的另一个Excel实例中运行它,Excel将在退出时崩溃。我不明白为什么它在一种情况下会这样做,而在另一种情况下却不会。在DataUpdate.xls中,我有2个过程,UpdateTable()和OnWorkbookOpen(),当工作簿打开。OptionExplicitSubUpdateTab

windows - FOR/F 循环中的虚假 'system\cmd.exe'

这是似乎变得更加复杂的要求之一,每次我发现Windows/cmdshellhack需要“解决”。本质上...我需要在DOSShellFOR循环中遍历特定的文件夹列表。这是我想出的循环:echo^[startfortest]for/F"usebackq"%%fIN(`dir/b/adh"w:\sandbox\tmp\"`)DO(echo^dowithfile:%%frem)echo^[fortestdone]主要需要遍历源文件夹中的隐藏目录(此处为sandbox\tmp)。结果既令人惊讶又令人沮丧。这是在控制台命令行上使用此FOR指令的结果。W:..>for/F"usebackq"%fI

windows - 使用 cmd 提示符编写脚本

我正在尝试制作一个脚本,该脚本将放置一个正在运行的进程列表(在.csv文件中),这些进程占用超过10mb的RAM,并显示脚本运行的时间和日期。我的老师在他的演讲中这样做了,但我不记得他是怎么做到的。只是想弄清楚如何在IT方面做得更好。所以我的问题是,有人可以帮我解决这个问题吗?我什至不知道从哪里开始。 最佳答案 您可以像这样在PowerShell中执行此操作:Get-Process|Where{$_.PM-gt10MB}|Export-Csv"memhogs-$(Get-Date-uf%Y%m%d%H%M).csv或使用别名gps|

windows - 为什么 GIT 在从 bash 命令提示符运行时不使用 core.editor 和 commit.template 配置值?

当我从标准命令提示符运行commit时,它会打开由core.editor配置值定义的已配置编辑器,并使用由commit.template定义的模板。但是,当我从bash命令提示符运行提交时,它会忽略这些设置并打开没有模板的VI编辑器。为什么是这样?我不太担心编辑器,但我需要定义提交模板。 最佳答案 如果这些设置是全局设置(即在“$HOME/.gitconfig”文件中定义,而不是在本地存储库.git/config文件中定义),这意味着它们在您的HOME中定义。Windowssession(cmd)和bashsession之间的“主页

Android 应用程序卸载批处理/shell 脚本?

我开发了一个包含5个不同apk文件的小型应用程序。我在很多PC上进行开发,并且有很多正在开发的手机。每次换电脑,生成的APK文件的签名都变了,我不得不卸载手机上的应用程序。这非常耗时。那么是否有可能编写一个我可以在PC上运行的批处理/文件脚本,以便在设备上卸载定义的应用程序?我尝试过以下方式:for%%fin(adbdevices)do(adb-s%%funinstallbla.bli.blub)但不幸的是它不能正常工作;) 最佳答案 所以我终于能够获得脚本的工作版本:FOR/F"skip=1"%%PIN('adbdevices')

c - 一个 C 程序演示 cmd.exe 和一个 linux shell 例如bash,定界参数?

我听说cmdshell将整个内容传递给命令,然后标准C库将其分隔,同时考虑空格和引号。而在Linux中,只有shell可以做到这一点。一个带有while循环的程序,显示argsv[i]显示它是如何定界的,但不显示shell做了什么,也没有显示C库做了什么。任何人都可以指出或向我展示一个可以显示它的程序吗? 最佳答案 我想你想知道shell在linux中是如何工作的,对吗?我认为当我们在命令shell上键入任何内容时,shell接收所有参数作为字符串格式的参数,shell然后fork+exec二进制文件并将所有参数作为环境变量传递给新

Windows 批处理文件命令和变量

我不确定这是否可行,但我需要的是一个在Windows7上运行并执行以下操作的普通bat/cmd文件:步骤1。findstr-它应该使用正则表达式引擎找到一个特定的字符串。假设我们正在寻找一个包含在标签123中的数字(假设这样的文件是唯一的,因此返回一个值)。该命令将打印123到屏幕上,但我需要将它保存在一个变量中(不知道如何)。第2步。再次调用findstr在另一个目录上。现在我们想要找到一个文件名称(/m选项),其中包含我们在步骤1中保存的值(在另一组文件中,即另一个目录中)。再次,将结果(文件名)保存在一个变量中。说,file_123.txt符合标准。第3步。复制我们作为第二个fi

windows - 循环的批处理脚本不起作用,只循环一次

我正在编写一个批处理脚本,通过ftp将预定义文件夹的每个子文件夹传输到远程服务器。一切正常,但在for循环中,它只执行一次,只传输一个文件夹,然后跳出循环。我在for循环中有一堆代码FOR/f"delims="%%BIN('DIR"%backup_dir%"/A:D/B')DO(hereismycode)当我在for循环中使用一些短代码(如“echo”)时,它会正确运行。但是当我用ftp命令放置一堆代码时却不是。这些ftp代码可以正确运行但只能运行一次,然后它会打破循环。下面是for循环中的一段代码REM--SendmostrecentdailybackupsoffsiteIF!dai

windows - 在 Windows 上通过外部程序过滤行不返回任何内容

在Windows上的Vim中,我试图通过shell可执行文件过滤文件中的行。我正在使用以下命令::0,$!sort我的想法是使用Windowssort命令对文件的行进行排序。问题是我什么也得不到,所以实际上,文件中的所有行都被删除了,即它们被什么都没有替换(我可以使用undou恢复所有行)。在Vim之外,以下命令工作正常:typesort-lines.txt|sort(“sort-lines.txt”是我在vim中使用的测试文件。)我已经用Windowssort命令和Cygwinsort命令试过了。结果是一样的。有趣的是,如果我在Vim中使用以下命令::0,$!dir文件的行被替换为d