一段delete txt里空白的小代码

generhappy 2013-11-05 03:22:06
把下面的程序另存为bat,让后将txt拖入这个程序,就能在D盘下生成一个没有空行的这个txt,但是有个bug,如果txt有个空行里包含空格,这段代码就删不掉这个空行了,请问应该怎么修改?

@echo off
set n=1
:3
if exist d:\new_%n%.txt (set /a n+=1&goto 3)
set file=%1
for /f "usebackq delims=" %%i in ("%file%") do (
echo.%%i >>d:\new_%n%
)
echo
处理完毕!
...全文
439 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
工作鸟 2013-11-08
  • 打赏
  • 举报
回复
引用 7 楼 generhappy 的回复:
[quote=引用 4 楼 ffxfxl 的回复:] 你用一下这个逻辑来处理。我建议这个地方应该用findstr,而不是for。

@echo off 
set file=%1  
findstr "[\s]" %file% >> d:\new_"%file%"
文件名的规则你参照你之前的逻辑即可。
我也是不会这个批处理啊,请问应该具体怎么修改啊?[/quote] 好事做到底,把下面这个保存为bat,然后把要处理的文件拖过去就Ok了。

@echo off 
set n=1
set file=%1
:4
for /f "delims=" %%a in ("%file%") do (
set o=%%~dpna_%n%%%~xa
)
if exist "%o%" (set /a n+=1&goto 4)
for /f "delims=" %%a in ("%file%") do (
set o=%%~dpna_%n%%%~xa
)

findstr "[\s]" %file% >> "%o%"
echo 文件%file%处理后已另存为%o%。
threenewbee 2013-11-07
  • 打赏
  • 举报
回复
引用 6 楼 generhappy 的回复:
[quote=引用 5 楼 caozhy 的回复:] 用C#编写如下程序: 新建一个控制台: void Main(string[] Args) { System.IO.File.WriteAllLines(Args[1].Trim('\"'), System.IO.File.ReadAllLines(Args[0].Trim('\"')).Where(x => x.Trim() != "").ToArray()); } 编译成1.exe 调用 1.exe "c:\1.txt" "c:\2.txt"
额 我还是真没弄过这个控制台应用程序,请问直接生成就行,就能有这个1.exe么[/quote] 是的,VS新建一个C#控制台,贴进去就可以。
generhappy 2013-11-07
  • 打赏
  • 举报
回复
引用 4 楼 ffxfxl 的回复:
你用一下这个逻辑来处理。我建议这个地方应该用findstr,而不是for。

@echo off 
set file=%1  
findstr "[\s]" %file% >> d:\new_"%file%"
文件名的规则你参照你之前的逻辑即可。
我也是不会这个批处理啊,请问应该具体怎么修改啊?
generhappy 2013-11-07
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
用C#编写如下程序: 新建一个控制台: void Main(string[] Args) { System.IO.File.WriteAllLines(Args[1].Trim('\"'), System.IO.File.ReadAllLines(Args[0].Trim('\"')).Where(x => x.Trim() != "").ToArray()); } 编译成1.exe 调用 1.exe "c:\1.txt" "c:\2.txt"
额 我还是真没弄过这个控制台应用程序,请问直接生成就行,就能有这个1.exe么
threenewbee 2013-11-06
  • 打赏
  • 举报
回复
用C#编写如下程序: 新建一个控制台: void Main(string[] Args) { System.IO.File.WriteAllLines(Args[1].Trim('\"'), System.IO.File.ReadAllLines(Args[0].Trim('\"')).Where(x => x.Trim() != "").ToArray()); } 编译成1.exe 调用 1.exe "c:\1.txt" "c:\2.txt"
工作鸟 2013-11-06
  • 打赏
  • 举报
回复
你用一下这个逻辑来处理。我建议这个地方应该用findstr,而不是for。

@echo off 
set file=%1  
findstr "[\s]" %file% >> d:\new_"%file%"
文件名的规则你参照你之前的逻辑即可。
  • 打赏
  • 举报
回复
批处理。。。不会写
Dotar 2013-11-06
  • 打赏
  • 举报
回复
都快下班了。。
generhappy 2013-11-06
  • 打赏
  • 举报
回复
晕 没人回答我么???200分了啊

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧