我正在Windows中编写一个批处理文件来运行安装后脚本,需要做的事情之一是向系统路径添加一个目录。该脚本正在运行,它执行如下操作:setx路径"%PATH%;c:\path\to\add"-m这是正确设置路径,但如果用户重新安装程序,此脚本可能会运行多次。我想搜索c:\path\to\add的字符串,这样我就不会一遍又一遍地向系统路径添加相同的路径。这在使用sed的Linux中非常简单,但我不知道Windows中的命令是什么。我找到了findstr,但这似乎只适用于文件。这在Windows中是否可以在不安装额外软件的情况下实现?编辑:我正在使用InnoSetup创建安装可执行文件。
我有一个我无法弄清楚的简单问题:我想找到一个包含特定文件的父文件夹,并生成该父文件夹的绝对路径-这需要在批处理脚本中完成-否powershell,没有perl,没有python...例如,假设这是我的目录树:root_parent_pathdir0dir1file1dir2dir21dir22dir3dir31dir32在上面的示例中,root_parent_path的格式为c:\folder1\folder2\。结果应存储在环境变量中,例如RESULT_PATH。所以如果我调用以下任何一个:script.batchfile1root_parent_path\dir1\dir2scri
我正在尝试编写一个批处理脚本,我必须在其中删除文件夹的内容,而不删除文件夹本身。我尝试使用del"."但此时它会停止批处理脚本,询问我是否确定要删除。我不需要任何提示。有没有更简单的方法来安静地执行此操作? 最佳答案 del/q"."/q:安静模式,不询问是否可以删除全局通配符与大多数命令一样,您可以使用del/?来查看此类选项。 关于windows-在没有提示的情况下删除批处理脚本,Windows中的文件夹内容,我们在StackOverflow上找到一个类似的问题:
我有以下脚本,它被设置为自动将文件移动到映射网络驱动器的任务。问题是这仅在用户登录并打开事件的Windowssession时有效。但是,如果用户注销,这些备份将不会发生,因为我相信它找不到网络驱动器。这是在Windows2003Server上运行的。无论如何要更改脚本以确保它可以在没有事件session打开时连接到网络驱动器?我使用的过程是移动文件,然后删除文件清理硬盘空间,然后运行.exe清空回收站。@echooffmoveC:\StarshipBackup\*.*Z:\StarshipDataBackupdelC:\StarshipBackup\*.*/F/QC:\emptyrec
我编写了一个简单的批处理文件来解析日志文件并在屏幕上打印出所需的数据。除了我的输出没有像我希望的那样正确对齐这一事实,我一切正常。这是我的批处理脚本:@echooffsetlocalechoNameRegNo.echo-------------------------------------for/f"tokens=1-3delims='"%%Ain('findstr"Registered"registration.log')do(echo%%B%%C)endlocal输出是:NameRegNo.-------------------------------------RusselMc
我有一个不喜欢使用通配符的cli应用程序。在这个例子中使用*.dat。我只是收到一个错误,指出文件*.dat无效。我有一个包含数千个文件的文件夹,需要使用此工具进行处理。所以手动做是不行的。我遇到了很多遇到这个问题的应用程序,但这次它相当重要。如何处理这些应用程序的通用解决方案会非常好。我可以制作所有*.dat文件的文件列表并将其提供给应用程序吗?我没有必要使用批处理脚本,但它似乎是迄今为止最简单的解决方案。 最佳答案 您可以使用for循环:for%%xin(*.dat)domycommand"%%x"这将为每个文件启动一次命令。如
我正在尝试使用Windows批处理程序从文本文件中删除所有空行。我知道实现此目的的最简单方法是bash是通过正则表达式和sed命令:sed-i"/^$/d"test.txt问题:Windows批处理是否有类似的简单方法来从文本文件中删除所有行?否则,实现此目标的最简单方法是什么?注意:我正在运行这个批处理脚本来设置新的Windows计算机供客户使用,因此最好不需要安装(然后卸载)其他程序来实现此目的-理想情况下,我将只使用“标准”批处理库。 最佳答案 对于/f不处理空行:for/f"usebackqtokens=*delims="%
如果您打开命令提示符并输入:echofoobar>nul它不会打印任何东西,因为nul吞掉了它的所有输入。但是,如果您使用PowerShell运行命令:powershell"echofoobar">nul它将输出foobar到控制台。为什么会这样,我该如何解决?编辑:Here是$PSVersionTable的输出。看起来我使用的是PowerShellv5.0。 最佳答案 注意:我假设您是从cmd.exe调用您的命令,而不是从PowerShell中调用命令,这与我看到的症状一致。我认为您在PS(PowerShell)v5中偶然发现了一
我有一个非常基本的脚本,可以响应本地管理员帐户。我的目标是摆脱所有页眉/页脚信息。到目前为止我有:FOR/F"skip=6"%%GIN('netlocalgroupadministrators')DOecho%%G回声:AdministratorMyNameThe“The”是页脚中的第一个词:“命令已成功完成。”所以我想去掉“The”,但我知道我可能必须重组整个脚本,这很好。我试过保存到变量%str%但你不能设置多行变量。此外,使用txt文件作为缓冲区也不是一种选择。有什么意见吗? 最佳答案 我可以想到两个简单的解决方案:FOR/F
有没有办法将所有不包含名为“test”的文件的文件夹(完整路径)保存在文本文件中。 最佳答案 这应该可行@echoofffor/d/r%%fin(*)do(ifnotexist%%f\test.txt(echo%%f>>C:\folders.txt))这会将所有不包含文件test.txt的文件夹输出到文件C:\folders.txt,只需根据您的需要进行微调/调整。 关于windows-批处理以列出不包含特定文件的文件夹,我们在StackOverflow上找到一个类似的问题: