[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理:if-变量值输出到文本的问题

请专家指引一下哦
①代码运行echo;"!tet:~0,2!"显示:“C:”,我该如何补全“ if "!tet!"=="!tet~0,2!" echo %%i ”,才能打印输出到txt文本呢?
②如果我要保留原文件的空行、格式不变,本代码又该怎么修改?
你的任何帮助对我都是有用的。谢谢!
代码如下:
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a-d /s *.txt') do (
set "tet=%%i"
if "!tet!"=="!tet:~0,2!" echo %%i >> 3.txt
echo;"!tet:~0,2!"
)
pause
批处理我不会多嘛!

回复 6# fzp070

TOP

回复 2# hfxiang

非常感谢各位专家!
我重新描述一下:
   本批处理代码要解决的问题是:提取目录子目录下(文件夹)所有txt文本文件内容中少于3个字符的行输出到3.txt。
   我把('dir /b /a-d /s *.txt')它改为1.txt单个文件,运行代码可以获取小于3字符的所有行到3.txt。但是批量处理就不行了,我用添加 echo;"!tet:~0,2!" 调试查看在cmd窗口显示:“C:”,有几个文件就显示几个/每行一个“C:”,我想问题应该出在 if....句,但是我不会处理了,特向批处理专家请教,分享大家的好办法。
   第②个问题我想是这样的:如果不是提取而直接批量删除小于3个字符的行,那么如何保留各个文本原格式不变,比如原来的空行、空格等保留不变

TOP

本帖最后由 WBATW 于 2022-10-22 21:23 编辑

回复 4# fzp070

我的重新描述放在 8楼(回复 2# hfxiang)烦请专家看看哦

TOP

回复 3# fzp070

我的重新描述放在 8楼(回复 2# hfxiang)烦请专家看看哦

TOP

回复 13# fzp070

代码测试成功运行,功能实现每个文件独立输出到文本,也可以输出到一个文件

,感觉效果很好,还写了3个方案,真诚感谢你的辛苦付出,谢谢!关于if...和

dir及findstr的关系还存疑惑,需继续向专家们学习!

TOP

回复 14# qixiaobin0715

首先,非常感谢你列举了两个问题的代码。辛苦了!
其次,请问一下专家:运行代码的结果出现了以下情况:
中间行为回车符空行的会提取出来;纯数字字母的可以正常提取到而纯汉字的却

提取不到(同样是2个字符如“2进”和“二进”。好像与字符的字节大小有关)

、或者有少数提取(数字开头的容易获取到哦)。主要是中文汉字,代码2的情况

好于代码1,特别是能在原文件中直接去除字符的方法很好。请教专家是什么情况

,是否可以通过修改代码能解决。再次感谢!

TOP

回复 17# hfxiang

非常感谢再次提出解决和分析方案。在此真诚感谢各位

专家的指教,谢谢!

谢谢大家的热情和参与!

TOP

回复 20# qixiaobin0715
非常感谢你的热情,你也发现了问题

TOP

回复 15# Batcher


    好的,谢谢提示!

TOP

本帖最后由 WBATW 于 2022-10-25 15:39 编辑

回复 28# fzp070
谦虚了____
还是要感谢你的回复!
    首先肯定你的思路开阔,考虑细腻,代码注释说明,条理清楚近逼完美,惯习以常,毕慧聚自成,盛器也!
(我们技术人机械人一般都,说1不2,看上去简练精准没有多余的“废话”而很有知识,但却丢失了另外一样重要的东西__沟通交流的文化。就像是有骨架没有血肉,就会远离对方的亲近感而丢失沟通交流的机会,代码是知识注释是文化....哈哈哈...扯远了)书归正传:
    代码测试一次成功,还有就是输出的新文件没有保留原格式,会把原来的空行去除了,可否通过修改代码保留原来格式;你这代码提示我想起一个新功能:某些特定的多个字符和符号比如:“本目录”“@)”“25”等等之类也提取到输出文件。这样的话可以防止虽然是小于3字符但是又需要保留的不被去除。谢谢!

TOP

回复 32# qixiaobin0715

恭喜恭喜,这个思路很好,测试基本成功!
辛苦了,qixiaobin0715 !
    测试过程发现:
    代码设置字符“@)”为中文时,测试文件中有英文“@)”和中文“@)”字符,中文“@)”可以成功获取(英文的“@)”获取不到);
    代码设置字符“@)”为英文时,此时,英文字符获取不到、中文的也获取不到。如何修改代码来解决这个难题呢,另外,回车换行的空行保留了而有空格的空行(Tab空行)会被去除掉,可否挽留呢!还要费专家心思了,谢谢!

TOP

本帖最后由 WBATW 于 2022-11-1 14:24 编辑

回复 34# qixiaobin0715
哦~
好的,谢谢!
    也许是我描述过细反而不利于理解。
其实就是英文半角状态的“@)”字符、“)”【不包括引号】括号字符获取不到。最好保留所有的空行。【顺便说明:中文字符状态下效果非常棒】。
    这是我用32楼代码的测试文件:1.txt,请批处理专家qixiaobin0715 试测,谢谢!
------------------------------------
我的测试字符为英文:
25
@)
)
第4行空格空行
最好是能够保留原文件原有的空行。
(32楼代码中的变量需要修改或者增加一个_)=1)
-----------------------------------

TOP

回复 37# qixiaobin0715
非常感谢你列出的清单详细,中英文都包括了,完全正确。不知道代码有难度没有。

TOP

回复 39# qixiaobin0715
感谢你的回复!
    感谢专家,智慧无量,笔下代码新颖,成功运行。也许在代码程序家的眼里是一小酌,但却彰显了批处理之家成员的品味,真诚赞贺!
谢谢!

TOP

返回列表