标题: [文本处理] 解决去除BAT代码里的关键词行 [打印本页]
作者: allen2023 时间: 2023-11-12 21:46 标题: 解决去除BAT代码里的关键词行
- @echo off
- setlocal enabledelayedexpansion
- REM set "f1=%~0"
- set "f1=%~f0"
- set "f2=%~dp0删除注释.txt"
- REM set str_eplce=""
- set matchStr=REM
- type %f1% > %f2%
- echo. >> %f2%
- echo ———————————————————————————————— >> %f2%
- for /f %%i in (%f1%) do (
- REM echo !a!
- set a=%%i
- REM set a=!a:^:^:=REM!
- REM find "REM" "!a!" && echo !a!&pause || echo !a! >> %f2%
- REM for /f "delims=:" %%i in ('findstr /v /r !a! "REM"') do echo !a! >> %f2%
- echo %%i | findstr %matchStr% >nul && echo %%i || echo %%i >> %f2%
- )
-
- start %f2%
- pause
-
-
- REM @echo off
- REM for /f "delims=" %%a in (b.txt) do set "%%a=0"
- REM (for /f "delims=" %%a in (a.txt) do (
- REM if not defined %%a echo;%%a
- REM ))>c.txt
-
-
- pause
复制代码
新手的代码难免一堆注释,我想让rem标示的行删除掉,保留其余行,执行后的到的只有这- @echo
- setlocal
- set
- set
- set
- type
- echo.
- echo
- for
- set
- echo
- )
- start
- pause
- pause
复制代码
最长能留8个字符?
作者: hfxiang 时间: 2023-11-12 22:01
回复 1# allen2023
针对楼主的样本,用第3方工具sed( http://bcn.bathome.net/tool/4.9/sed.exe )的实现结果,看是否符合楼主的要求?- sed -r "/^[ \t]*REM/d;/^[ \t]*$/d" 1.bat>2.bat
复制代码
作者: allen2023 时间: 2023-11-12 22:40
本帖最后由 allen2023 于 2023-11-12 22:45 编辑
回复 2# hfxiang
验证成功,ok。
如果纯批,写进代码,每次运行,自动生成一份,多好
————————————————
借此楼,总结下这两天注册论坛的问题,碰碰运气,抽时间摸索出来了跟帖发布出来
昨天注册的论坛账号,今天提问的两个问题应该每一位都有需求,没有找到答案;借此再求助一下。
1.局域网如何自动给每台电脑上传文件
http://www.bathome.net/redirect. ... 7794&pid=275821
不用看描述,直接实现也行
分解下:
- 手动或自动每台电脑开共享文件夹,同样的路径;
- 自动给该路径新建一个文件夹;
- 自动同步文件过去
2.让电脑只允许运行指定程序
http://www.bathome.net/thread-67800-1-1.html
bat怎么操控注册表来实现,知道的几个思路发链接里了
等高手来答疑,或发参考案例也行
个性化问题1个,教室用。
http://www.bathome.net/thread-67802-1-1.html
监控桌面,之前用的向日葵,想用bat的方法,主要是bat效率高方便
根据帖子4楼hlzj88的留言提示,搜了下确实有一些软件,功能太多了用不到,只要把10几台的屏幕同步到本地程序就行,响应不需要很及时,1分钟内能刷新就行
外行业余,突然有个专业问题,确实太难了~摸索起来,时间不够用
作者: allen2023 时间: 2023-11-12 22:53
回复 2# hfxiang
麻烦改一下, 生成后能去除掉下面这句,还有::这种类似的注释符,那就通用了- sed -r "/^[ \t]*REM/d;/^[ \t]*$/d" %~f0>%~dp0%~n0_rem%~x0
复制代码
作者: Five66 时间: 2023-11-12 23:00
在包含注释的bat代码文件最开头加上一句- @findstr /ivbrc:"[ ]*rem " /bc:"@findstr /ivbrc" "%~f0" >"%~dp0删除注释.txt"&pause&exit/b
复制代码
作者: allen2023 时间: 2023-11-13 10:07
本帖最后由 allen2023 于 2023-11-13 10:16 编辑
回复 5# Five66
感谢,不懂原理,改成功了,可以把 ::行 也去除掉,这个论坛真是好!!- @findstr /ivbrc:"[ ]*rem " /bc:"@findstr /ivbrc" "%~f0" >"%~dp0%~n0_r1%~x0"&pause&@findstr /ivbrc:"[ ]*::" /bc:"@findstr /ivbrc" "%~dp0%~n0_r1%~x0" >"%~dp0%~n0_r2%~x0"&pause&exit/b
复制代码
一点点小遗留问题:ansi 成了 utf-8
作者: Five66 时间: 2023-11-13 23:47
回复 6# allen2023
原理就是:用 finstr 从 "~f0" 中查找不包含 注释 和 命令自身 的行到文件中
编码问题大概是你默认的编码吧,挺无解的,批处理的编码不能随心所欲,顶多就切换下代码页凑合一下
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |