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

[文本处理] [已解决]批处理怎样删除文本(只有一行)里面最后一个 \ 以后的内容,谢谢

本帖最后由 yyz219 于 2022-12-25 17:08 编辑

下面比较科学
  1. @echo off
  2. for /f "delims=" %%i in ('type "Old.txt"') do (
  3.     >"New.txt" echo,%%~dpi
  4. )
复制代码
问题可以解决了:
  1. @echo off
  2. for /f "delims=*" %%a in (文本.txt) do (
  3.     for /f "delims=" %%i in ("%%a") do (
  4.         echo %%~dpi>>xx.tmp
  5.         move /y xx.tmp 文本.txt
  6.     )
  7. )
  8. pause
复制代码

***************************************************
原来的问题:

求批处理:删除文本(只有一行)里面最后一个 \  以后的内容,谢谢

文本内容形如(变化的):
D:\记事本的收藏夹\常用命令.bat

希望运行以后,变为:
D:\记事本的收藏夹\
或者
D:\记事本的收藏夹

******************************
也就是,要将文件完整路径,变为所在目录
我是小白,希望老师多多帮助

回复  xczxczxcz


    他说速度慢,我还以为又是百万千万行的呢,结果就一行
一行随用用什么写,随便 ...
pd1 发表于 2022-12-26 11:29


目的是实现最自动化哦
我是小白,希望老师多多帮助

TOP

回复 27# xczxczxcz


    他说速度慢,我还以为又是百万千万行的呢,结果就一行
一行随用用什么写,随便怎么写页很难慢吧

TOP

回复  pd1

好复杂啊!
这样试试:
xczxczxcz 发表于 2022-12-25 17:53


这个简洁
我是小白,希望老师多多帮助

TOP

回复 19# pd1

好复杂啊!
这样试试:
  1. @echo off
  2. cd /d "%~dp0"
  3. powershell -c "(gc '%~dp0a.txt') -replace '\\[^\\]*$'|sc %~dp0a.txt -force"&pause
复制代码
1

评分人数

QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

冒个泡,来个通用的。非完整路径也可以用。
xczxczxcz 发表于 2022-12-25 17:22



    感谢大师出手
我是小白,希望老师多多帮助

TOP

回复 21# Batcher

谢谢管理员大佬指点,我还没用过type...有时间去学习下!
bat小白,请多指教!谢谢!

TOP

冒个泡,来个通用的。非完整路径也可以用。
  1. @echo off
  2. cd /d "%~dp0"
  3. set /p str=<a.txt
  4. set "_out="
  5. :loop
  6. for /f "tokens=1* delims=\" %%i in ("%str%") do (
  7. if "%%j" neq "" (
  8. set "_out=%_out%\%%i"
  9. set "str=%%j"
  10. goto :loop
  11. )
  12. )
  13. echo %_out:~1%
  14. pause
复制代码
1

评分人数

QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

回复  77七


一层for循环就够了
Batcher 发表于 2022-12-25 16:31


成功了 再次感谢
我是小白,希望老师多多帮助

TOP

回复  77七


一层for循环就够了
Batcher 发表于 2022-12-25 16:31


我试一试 谢谢
我是小白,希望老师多多帮助

TOP

回复 15# 77七


一层for循环就够了
  1. @echo off
  2. for /f "delims=" %%i in ('type "Old.txt"') do (
  3.     >"New.txt" echo,%%~dpi
  4. )
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 18# yyz219


    一行你说的慢体现在哪?没明白

TOP

这个应该快一些,yuan.txt是原本的,new.txt是新生成的
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. Measure-Command{ [IO.File]::WriteAllLines(".\new.txt",([io.file]::ReadAllLines(".\yuan.txt")|%{$_.substring(0,$_.lastindexof("\"))}))}
复制代码
1

评分人数

TOP

回复  yyz219


    你的有多少行?
pd1 发表于 2022-12-24 18:22



    只有一行
我是小白,希望老师多多帮助

TOP

回复  yyz219


   好像延迟变量写多余了...      !被当成延迟变量标志省略了
77七 发表于 2022-12-24 18:18


辛苦了 谢谢
我是小白,希望老师多多帮助

TOP

返回列表