标题: [文本处理] [已解决]批处理怎样删除文本(只有一行)里面最后一个 \ 以后的内容,谢谢 [打印本页]
作者: yyz219 时间: 2022-12-24 14:32 标题: [已解决]批处理怎样删除文本(只有一行)里面最后一个 \ 以后的内容,谢谢
本帖最后由 yyz219 于 2022-12-25 17:08 编辑
下面比较科学- @echo off
- for /f "delims=" %%i in ('type "Old.txt"') do (
- >"New.txt" echo,%%~dpi
- )
复制代码
问题可以解决了:- @echo off
- for /f "delims=*" %%a in (文本.txt) do (
- for /f "delims=" %%i in ("%%a") do (
- echo %%~dpi>>xx.tmp
- move /y xx.tmp 文本.txt
- )
- )
- pause
复制代码
***************************************************
原来的问题:
求批处理:删除文本(只有一行)里面最后一个 \ 以后的内容,谢谢
文本内容形如(变化的):
D:\记事本的收藏夹\常用命令.bat
希望运行以后,变为:
D:\记事本的收藏夹\
或者
D:\记事本的收藏夹
******************************
也就是,要将文件完整路径,变为所在目录
作者: pd1 时间: 2022-12-24 15:18
- #&cls&@Powershell "& {[ScriptBlock]::Create("'#' + (gc '%~f0' -raw)").Invoke()}" & pause & exit
- Get-Content .\1.txt|%{$_.substring(0,$_.lastindexof("\"))}
复制代码
作者: 77七 时间: 2022-12-24 15:23
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=*" %%a in (文本.txt) do (
- for /f "delims=" %%i in ("%%a") do (
- set "lj=%%~dpi"
- echo !lj!>>xx.tmp
- move /y xx.tmp 文本.txt
- )
- )
- endlocal
- pause
复制代码
作者: yyz219 时间: 2022-12-24 15:26
pd1 发表于 2022-12-24 15:18
我试一试先 谢谢
作者: yyz219 时间: 2022-12-24 15:26
77七 发表于 2022-12-24 15:23
我试一试先 谢谢
作者: yyz219 时间: 2022-12-24 15:38
本帖最后由 yyz219 于 2022-12-24 15:44 编辑
77七 发表于 2022-12-24 15:23
运行以后
第一个 \ 以后的内容都被删除了
我需要的是:删除 最后一个 \ 以后的内容
作者: yyz219 时间: 2022-12-24 15:41
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
请按任意键继续. . .
作者: 77七 时间: 2022-12-24 15:46
回复 6# yyz219 把文本保存为ansi格式
作者: pd1 时间: 2022-12-24 15:50
回复 7# yyz219
你什么系统?正常win7就带powershell了,还是用的什么精简版系统?
作者: pd1 时间: 2022-12-24 15:52
- <# :
- @echo off
- powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
- pause
- #>
- Get-Content .\1.txt|%{$_.substring(0,$_.lastindexof("\"))}
复制代码
也有可能是版本低了吧,试试这个
作者: pd1 时间: 2022-12-24 15:56
确实是你的版本低了
您正在使用PowerShell v2或更早版本。 PowerShell v3引入了参数-Raw
作者: yyz219 时间: 2022-12-24 15:58
回复 yyz219 把文本保存为ansi格式
77七 发表于 2022-12-24 15:46
成功了,再次感谢
作者: yyz219 时间: 2022-12-24 16:22
本帖最后由 yyz219 于 2022-12-24 16:54 编辑
回复 yyz219 把文本保存为ansi格式
77七 发表于 2022-12-24 15:46
如果路径有 “!” 号,“!” 号不会出来
看看能不能再修改一下?谢谢
作者: yyz219 时间: 2022-12-24 16:49
也有可能是版本低了吧,试试这个
pd1 发表于 2022-12-24 15:52
这个可以,就是有一点慢
作者: 77七 时间: 2022-12-24 18:18
回复 13# yyz219
- @echo off
- for /f "delims=*" %%a in (文本.txt) do (
- for /f "delims=" %%i in ("%%a") do (
- echo %%~dpi>>xx.tmp
- move /y xx.tmp 文本.txt
- )
- )
- pause
复制代码
好像延迟变量写多余了... !被当成延迟变量标志省略了
作者: pd1 时间: 2022-12-24 18:22
回复 14# yyz219
你的有多少行?
作者: yyz219 时间: 2022-12-24 18:23
回复 yyz219
好像延迟变量写多余了... !被当成延迟变量标志省略了
77七 发表于 2022-12-24 18:18
辛苦了 谢谢
作者: yyz219 时间: 2022-12-24 18:25
回复 yyz219
你的有多少行?
pd1 发表于 2022-12-24 18:22
只有一行
作者: pd1 时间: 2022-12-24 18:38
这个应该快一些,yuan.txt是原本的,new.txt是新生成的- <# :
- @echo off
- powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
- pause
- #>
- Measure-Command{ [IO.File]::WriteAllLines(".\new.txt",([io.file]::ReadAllLines(".\yuan.txt")|%{$_.substring(0,$_.lastindexof("\"))}))}
复制代码
作者: pd1 时间: 2022-12-24 18:42
回复 18# yyz219
一行你说的慢体现在哪?没明白
作者: Batcher 时间: 2022-12-25 16:31
回复 15# 77七
一层for循环就够了- @echo off
- for /f "delims=" %%i in ('type "Old.txt"') do (
- >"New.txt" echo,%%~dpi
- )
复制代码
作者: yyz219 时间: 2022-12-25 16:57
回复 77七
一层for循环就够了
Batcher 发表于 2022-12-25 16:31
我试一试 谢谢
作者: yyz219 时间: 2022-12-25 17:02
回复 77七
一层for循环就够了
Batcher 发表于 2022-12-25 16:31
成功了 再次感谢
作者: xczxczxcz 时间: 2022-12-25 17:22
冒个泡,来个通用的。非完整路径也可以用。- @echo off
- cd /d "%~dp0"
-
- set /p str=<a.txt
- set "_out="
-
- :loop
- for /f "tokens=1* delims=\" %%i in ("%str%") do (
- if "%%j" neq "" (
- set "_out=%_out%\%%i"
- set "str=%%j"
- goto :loop
- )
- )
-
- echo %_out:~1%
- pause
复制代码
作者: 77七 时间: 2022-12-25 17:25
回复 21# Batcher
谢谢管理员大佬指点,我还没用过type...有时间去学习下!
作者: yyz219 时间: 2022-12-25 17:30
冒个泡,来个通用的。非完整路径也可以用。
xczxczxcz 发表于 2022-12-25 17:22
感谢大师出手
作者: xczxczxcz 时间: 2022-12-25 17:53
回复 19# pd1
好复杂啊!
这样试试:- @echo off
- cd /d "%~dp0"
-
- powershell -c "(gc '%~dp0a.txt') -replace '\\[^\\]*$'|sc %~dp0a.txt -force"&pause
复制代码
作者: yyz219 时间: 2022-12-25 19:09
回复 pd1
好复杂啊!
这样试试:
xczxczxcz 发表于 2022-12-25 17:53
这个简洁
作者: pd1 时间: 2022-12-26 11:29
回复 27# xczxczxcz
他说速度慢,我还以为又是百万千万行的呢,结果就一行
一行随用用什么写,随便怎么写页很难慢吧
作者: yyz219 时间: 2022-12-26 11:36
回复 xczxczxcz
他说速度慢,我还以为又是百万千万行的呢,结果就一行
一行随用用什么写,随便 ...
pd1 发表于 2022-12-26 11:29
目的是实现最自动化哦
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |