草庐IT

Windows 批处理或 powershell。替换 "{\n}"文本

我有一个文本文件,其中包含:title{}我需要将{\n}替换为“mytext”。我试着用这个:powershell-Command"(gcfile.txt)-replace\"{\n}\","mytext"没有成功。谁能帮帮我?谢谢。 最佳答案 为了-replace跨行操作,您必须将整个文件作为读入内存单个字符串,这是Get-Content-Raw(gc-raw)(PSv3+)的作用。此外,要说明Windows上典型的CRLF(\r\n)行结尾,请使用\r?\n来匹配它们和仅LF(\n)行结尾,如MathiasR.Jessen建议

windows - Windows 批处理脚本打开文件选择器对话框或将文件拖放到其中

我尝试编写一个批处理脚本,当您将另一个文件拖放到其中时,它会执行某些操作。如果您没有放下任何东西,只需双击它,它会打开一个文件选择对话框窗口。对于第一部分,很简单:@echooffbin\dosomething"%~1"对于第二部分,我用谷歌搜索了这个主题:https://stackoverflow.com/a/15885133/1683264它也有效。但是,我不能将这两者合而为一。我试过了if"%~1"==[]gotoselect然后在第二部分之前添加:select,就是不行。代码如下:@ECHOOFFif"%~1"==[]gotoselectbin\dosomething"%~1"

Windows 批处理 : combining start and FOR/f "tokens=1" with | escape coded symbols

我正在尝试从标准Windows批处理文件中执行此命令。start/Bfor/f"tokens=1"%%ain('QuerySESSION^|find/i"rdp"')do(echoyes|resetsession%%a)它抛出一个错误:"|wasunexpectedatthistime."我刚刚发现它失败了,因为start在开头。有什么问题吗? 最佳答案 从批处理文件中尝试使用start构建有效的单行解决方案是个坏主意,转义/引用复杂表达式非常棘手。但是在同一个批处理文件中使用start和跳转到标签非常简单。@echooffREM*

linux - 如果由 bash 执行,如何使批处理脚本退出?

我有一个在构建时运行Windows.bat文件的存储库。当我在Linux上时,我希望它不要那样做。我可以在.bat文件中添加一个技巧,还是必须让构建系统处理这个问题? 最佳答案 找到了一个简单的解决方案,只需将以下几行放在.bat文件的头部即可:rem(){echo"Notrunningprebuild.batonLinux";exit0;}remskipprebuildifexecutedbybash 关于linux-如果由bash执行,如何使批处理脚本退出?,我们在StackOver

windows - 在批处理脚本之后继续使用 CMD 命令

我正在尝试编写一个批处理脚本,该脚本一旦完成,将允许用户继续使用Windows命令提示符,因为他们通常不会运行任何脚本。这可能吗?提前感谢您的帮助。 最佳答案 如果您手动打开CMD(命令提示符)并按名称调用批处理文件,则在批处理文件完成后,CMD将保持打开状态以执行其他命令。您不能通过双击批处理文件来执行此操作,但如果您创建一个运行CMD.EXE的批处理文件的快捷方式,并带有/K开关,您将运行批处理文件,然后让CMD运行以获取其他命令。参见CMDatSS64. 关于windows-在批处

windows - 软件/批处理/连接到网络和下载的东西

是否存在适用于Windows操作系统的软件/批处理/某物,可以访问Web并在指定文件夹中及时递归地下载文件(如xml)(如一天1次)? 最佳答案 wget 关于windows-软件/批处理/连接到网络和下载的东西,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2999217/

windows - 使用批处理脚本从文本文件中删除多行字符串

我正在尝试创建一个批处理文件,该文件将编辑一个文本文件以删除包含特定字符串的行并之后直接删除该行。此文件的示例如下所示:LINEENTRYKEEP_1BLABLAENDLINEENTRYREMOVE_1FOOBARENDLINEENTRYREMOVE_2HELLOWORLDENDLINEENTRYKEEP_2CATDOGEND运行批处理脚本后,我需要包含新文件LINEENTRYKEEP_1BLABLAENDLINEENTRYKEEP_2CATDOGEND已删除任何包含REMOVE_的行,以及相应的“END”行。我尝试使用发现的技术here删除包含字符串的行,但似乎不可能包含诸如\r\n

windows - 批处理脚本 : local variable from function1 to function2

好吧,让我试着解释一下我的问题:我从一行开始2个不同的函数setlocalEnableDelayedExpansionfor%%iin("C:\*.*")do(call:function1"%%~i"call:function2"%%~i")goto:eof在function1中,在某个点我在本地环境中做了一个SET:setlocalEnableDelayedExpansion......setname1=blablaendlocal&SETname=%name1%echo%name%goto:eof回声确实返回了我的变量。现在解决我的问题。我退出功能1并转到功能2(请参阅第一个代码段

windows - 批处理,调用 : Why can't I pass a token to my subroutine?

这一定很简单。不幸的是,我也是。“filelist.txt”是输出:dir/b此代码有效:对于“filelist.txt”中的每一行,该行都按预期回显。for/F"tokens=*"%%Ain(filelist.txt)doecho%%A此代码不起作用:对于“filelist.txt”中的每一行,仅回显变量名称“%A”。for/F"tokens=*"%%Ain(filelist.txt)docall:sub1goto:eof:sub1echo%%Agoto:eof我做错了什么?提前致谢。 最佳答案 尝试:@echoofffor/F"

windows - 如何从基于自身的批处理脚本中找出第 3 个目录 - %0

当从放置它的同一目录调用文件时,这有效:@ECHOOFFset_MyCurrentPath=%CD%pushd..set_Level1UpDir=%CD%ECHO_Level1UpDir:%_Level1UpDir%pushd..set_Level2UpDir=%CD%ECHO_Level2UpDir:%_Level2UpDir%pushd..set_Level3UpDir=%CD%ECHO_Level3UpDir:%_Level3UpDir%PAUSE然而,如何从%0开始上升到第n级……这需要使用for/f%%in进行一些花哨的调用我的策略是计算反斜杠的数量和第二个for循环,如下所