标题: [文本处理] 批处理如何判断变量最后一位是否为空格,如是则去掉? [打印本页]
作者: YSYHZ 时间: 4 天前 00:23 标题: 批处理如何判断变量最后一位是否为空格,如是则去掉?
- @echo off
- set end=" "
- set sp=" "
-
- if "%end%" equ "%sp%" (echo change
- ) else (echo no change)
- pause
复制代码
老哥们我用这个代码为什么不行啊,明明用下面这个代码是可以,怎么赋给变量就不行了。- @echo off
- if " " equ " " (echo change
- ) else (echo no change)
- pause
复制代码
是不能用这种方法吗?如果不能的话,怎么判断变量最后一位是否为空格,如是则去掉。
作者: YSYHZ 时间: 4 天前 01:40
- @echo off
- set end=" "
- set sp=" "
-
- if end == sp (echo change
- ) else (echo no change)
- pause
复制代码
l老哥们改成这样子倒是能运行了,但是返回值为no change 对不上啊,应该返回change才对啊
作者: Five66 时间: 4 天前 05:25
可以用变量截取
截取最后一个: %变量名:~-1,1%
除了最后一个: %变量名:~0,-1%
参考
http://www.bathome.net/viewthread.php?tid=996
作者: qixiaobin0715 时间: 3 天前 08:25
本帖最后由 qixiaobin0715 于 2024-12-2 08:27 编辑
- @echo off
- set "str= a. bc "
- for /f "delims=" %%i in ("%str%") do echo,%%~nxi
- pause
复制代码
注意2点:
1.变量值中不能出现字符“:/\”;
2.变量值结尾不能是“.+空格”的形式,中间出现此种形式没关系。
否则会出问题。
作者: hfxiang 时间: 3 天前 11:02
回复 1# YSYHZ
可用sed( http://bcn.bathome.net/tool/4.9/sed.exe )删除每一行拖尾的"空白字符"(空格,制表符)- sed -i.bak -r "s/[ \t]*$//" 1.txt
复制代码
作者: aloha20200628 时间: 3 天前 13:54
本帖最后由 aloha20200628 于 2024-12-2 14:02 编辑
回复 1# YSYHZ
一楼第一段代码改为如下即可- @echo off
- set end=" "
- set sp=" "
- if %end% equ %sp% (echo change) else (echo no change)
- pause
复制代码
或者改为如下亦可- @echo off
- set "end= "
- set "sp= "
- if "%end%" equ "%sp%" (echo change) else (echo no change)
- pause
复制代码
作者: 77七 时间: 3 天前 14:28
- @echo off
- set str=" "
- setlocal enabledelayedexpansion
- if "!str:~-1!" equ " " (
- set "str=!str:~0,-1!"
- )
- endlocal & set "str=%str%"
- rem echo [%str%]
- pause
复制代码
提示:如此赋值变量,此时 str的值包括双引号
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |