[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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:\记事本的收藏夹

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

  1. #&cls&@Powershell "& {[ScriptBlock]::Create("'#' + (gc '%~f0' -raw)").Invoke()}" & pause & exit
  2. Get-Content .\1.txt|%{$_.substring(0,$_.lastindexof("\"))}
复制代码
1

评分人数

TOP

  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

评分人数

bat小白,请多指教!谢谢!

TOP

pd1 发表于 2022-12-24 15:18



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

TOP

77七 发表于 2022-12-24 15:23



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

TOP

本帖最后由 yyz219 于 2022-12-24 15:44 编辑
77七 发表于 2022-12-24 15:23


运行以后

第一个 \ 以后的内容都被删除了
我需要的是:删除 最后一个 \ 以后的内容
我是小白,希望老师多多帮助

TOP

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

请按任意键继续. . .
我是小白,希望老师多多帮助

TOP

回复 6# yyz219 把文本保存为ansi格式
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 7# yyz219

你什么系统?正常win7就带powershell了,还是用的什么精简版系统?

TOP

  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

评分人数

TOP

确实是你的版本低了
您正在使用PowerShell v2或更早版本。 PowerShell v3引入了参数-Raw

TOP

回复  yyz219 把文本保存为ansi格式
77七 发表于 2022-12-24 15:46



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

TOP

本帖最后由 yyz219 于 2022-12-24 16:54 编辑
回复  yyz219 把文本保存为ansi格式
77七 发表于 2022-12-24 15:46



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

看看能不能再修改一下?谢谢
我是小白,希望老师多多帮助

TOP

也有可能是版本低了吧,试试这个
pd1 发表于 2022-12-24 15:52



    这个可以,就是有一点慢
我是小白,希望老师多多帮助

TOP

回复 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

评分人数

    • yyz219: 辛苦了 谢谢技术 + 1
bat小白,请多指教!谢谢!

TOP

返回列表