找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 62217|回复: 29

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

[复制链接]
发表于 2022-12-24 14:32:33 | 显示全部楼层 |阅读模式
本帖最后由 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:\记事本的收藏夹

******************************
也就是,要将文件完整路径,变为所在目录
发表于 2022-12-24 15:18:33 | 显示全部楼层
  1. #&cls&@Powershell "& {[ScriptBlock]::Create("'#' + (gc '%~f0' -raw)").Invoke()}" & pause & exit
  2. Get-Content .\1.txt|%{$_.substring(0,$_.lastindexof(""))}
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

发表于 2022-12-24 15:23:28 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=*" %%a in (文本.txt) do (
  4.     for /f "delims=" %%i in ("%%a") do (
  5.         set "lj=%%~dpi"
  6.         echo !lj!>>xx.tmp
  7.         move /y xx.tmp 文本.txt
  8.     )
  9. )
  10. endlocal
  11. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-12-24 15:26:29 | 显示全部楼层
pd1 发表于 2022-12-24 15:18



    我试一试先 谢谢
 楼主| 发表于 2022-12-24 15:26:44 | 显示全部楼层
77七 发表于 2022-12-24 15:23



     我试一试先 谢谢
 楼主| 发表于 2022-12-24 15:38:01 | 显示全部楼层
本帖最后由 yyz219 于 2022-12-24 15:44 编辑
77七 发表于 2022-12-24 15:23


运行以后

第一个 \ 以后的内容都被删除了
我需要的是:删除 最后一个 \ 以后的内容
 楼主| 发表于 2022-12-24 15:41:01 | 显示全部楼层
pd1 发表于 2022-12-24 15:18



    运行后,提示:

Get-Content : 找不到与参数名称“raw”匹配的参数。
所在位置 行:1 字符: 70
+ & {[ScriptBlock]::Create('#' + (gc 'D:\桌面\Desktop\打开文件位置\00.bat' -raw
<<<< )).Invoke()}
    + CategoryInfo          : InvalidArgument: ( [Get-Content], ParameterBin
   dingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
   ands.GetContentCommand

请按任意键继续. . .
发表于 2022-12-24 15:46:44 | 显示全部楼层
回复 6# yyz219 把文本保存为ansi格式

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

发表于 2022-12-24 15:50:27 | 显示全部楼层
回复 7# yyz219

你什么系统?正常win7就带powershell了,还是用的什么精简版系统?
发表于 2022-12-24 15:52:32 | 显示全部楼层
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. Get-Content .\1.txt|%{$_.substring(0,$_.lastindexof(""))}
复制代码
也有可能是版本低了吧,试试这个

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

发表于 2022-12-24 15:56:21 | 显示全部楼层
确实是你的版本低了
您正在使用PowerShell v2或更早版本。 PowerShell v3引入了参数-Raw
 楼主| 发表于 2022-12-24 15:58:16 | 显示全部楼层
回复  yyz219 把文本保存为ansi格式
77七 发表于 2022-12-24 15:46



    成功了,再次感谢
 楼主| 发表于 2022-12-24 16:22:45 | 显示全部楼层
本帖最后由 yyz219 于 2022-12-24 16:54 编辑
回复  yyz219 把文本保存为ansi格式
77七 发表于 2022-12-24 15:46



    如果路径有 “!”  号,“!”  号不会出来

看看能不能再修改一下?谢谢
 楼主| 发表于 2022-12-24 16:49:20 | 显示全部楼层
也有可能是版本低了吧,试试这个
pd1 发表于 2022-12-24 15:52



    这个可以,就是有一点慢
发表于 2022-12-24 18:18:14 | 显示全部楼层
回复 13# yyz219

  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
复制代码

   好像延迟变量写多余了...      !被当成延迟变量标志省略了

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 辛苦了 谢谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 10:12 , Processed in 0.022761 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表