bat批处理的代码如下 @echo off setlocal enabledelayedexpansion :: 设置文件夹路径 set "folderPath=D:\txt\" :: 遍历文件夹里的所有 txt 文件 for %%F in (%folderPath%\*.txt) do ( set "inputFile=%%F" set "outputFile=%%F_temp.txt" :: 第一步:替换特定字符为空 powershell -Command "(Get-Content '!inputFile!') -replace '[「」【】]', '' | Set-Content '!outputFile!'" :: 第二步:用正则表达式限制每行的字符数并添加新行 powershell -Command "(Get-Content '!outputFile!') -replace '(.{6,18}[,。:!?]|.{16})', '$1`n' | Set-Content '!outputFile!'" :: 第三步:替换特定字符为空 powershell -Command "(Get-Content '!outputFile!') -replace '[,。!]', '' | Set-Content '!outputFile!'" :: 第四步:移除空行 powershell -Command "(Get-Content '!outputFile!') | ? {$_ -ne ''} | Set-Content '!outputFile!'" :: 替换原文件 move /Y "!outputFile!" "!inputFile!" echo 文件 %%F 处理完成! ) echo 所有文件处理完成! pause 其中第二步中的用正则表达式限制每行的字符数并添加新行 powershell -Command "(Get-Content '!outputFile!') -replace '(.{6,18}[,。:!?]|.{16})', '$1`n' | Set-Content '!outputFile!'" 可以实现正则定位,但是无法实现换行,要如何修改,\n \r 设置了无效? $1 部分正常识别,但是一到换行就直接输出 n 并不能换行
各位大佬下午好,请问要怎么通过bat文件处理txt的文本内容。 现在的情况是我通过notepad++的文本工具处理txt文件内容。 以下是我的手动操作步骤。 1、我通过正则把 txt中的文本每行 字数进行限制代码如下: 替换目标:(.{6,18}[,。:!?]|.{16}) 替换为:$1\n 2、然后继续通过替换,把txt文本中的“,。!” 等内容替换为空。 3、然后在移除空行。 4、至此完成一个txt文档的处理工程 每天要重复处理几百个txt文档,请问,怎么批量操作以上的步骤呢,bat能实现拖入txt文档自动执行这些步骤嘛。 求大佬帮忙解脱这些机械式的工作。
# test.bat reg add "HKEY_CLASSES_ROOT\CLSID\{xxxxx-xxxx-xxxx-xxxx-xxxx}" /ve /t REG_SZ /d "中文" /f "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240915/bb31f3c34dd2b8d2df99b7a24cc23f74.png) 网上说的修改批处理文件的编码为ANSI,只能解决批处理打印为中文的问题,但是写入到注册表就无效了 chcp语法会导致第三行的reg命令被吞掉,见红线处: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240915/34dc88058f49442a8fcf3ceb84c8e474.png)
具体比如, 我在使用开源命令行工具bbdown下载b站视频, 一个合法命令比如, "bbdown --config-file C:\Users\test\mv.config --help". 为了方便快捷传入不同的配置文件, 我参照chatgpt回答写了一个bbdown.bat, 主要就是先做一个cd然后再调用bbdown.exe, 这样一来就可改用命令"bbdown.bat --config-file mv.config --help", 即简化了对配置文件路径的传入. @echo off cd "%~dp0" bbdown %* 但这样键入时, 需要在进入bbdown之后多按一下tab, 才能使之补全为bbdown.bat, 多少还是有点麻烦. 所以请问有没有什么方法能让我在直接调用bbdown.exe时候, 自动先执行bbdown.bat? chatgpt回答用autocmd, 但这就超出我浅显的能力范围了. ps. 我能想到的另一种间接实现方式是把环境变量pathext里面的.bat和.exe调换顺序, 但不清楚这样做有没有什么坏处. 或者是把bbdown.bat改名为mybbdown.bat之类的, 然后即可只键入"mybbdown...", 但还是想知道有没有更优雅的解决方案. 感谢. *** 再次查询chatgpt, 又看到一个看起来靠谱但试验后无效的方案。把.bat改成.cmd就可以先于bbdown.exe自动执行: 当在终端里输入bbdown.exe时,Windows会先在bbdown.exe所在的目录下寻找是否有同名的.cmd文件。如果有,那么Windows会优先执行这个.cmd文件,然后再执行bbdown.exe。这样就相当于在调用bbdown.exe之前自动执行了你的批处理文件。