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

[文本处理] 批处理for循环怎样查看相同字符串?

  1. @echo off
  2. set pa=%PATH%
  3. :a
  4. for /f "tokens=1,*  delims=;" %%i in ("%pa%") do (
  5. set pa=%%j
  6. set str=%%j
  7. :b
  8. for /f "tokens=1,*  delims=;" %%a in ("%str%") do (
  9. if "%%i"=="%%a" echo "有相同的字符"
  10. set str=%%b
  11. if defined str (goto :b)
  12. )
  13. if defined pa (goto :a)
  14. )
  15. pause
复制代码
我想写 查询自己的 环境变量中有没有重复的。就在新的环境变量中删除一个重复的,但写到判断有没有重的的项时遇到了问题
1.发现  set str=%%j   时 str显示为空的。没有赋值成功
2.不知道 为什么 第二个for循环中 "%%i"=="%%a" 为什么总是相等的。
3.不知道我这样写是不是逻辑有错误。
4.后面如何替换有思路点不清i淅,能否给个思路。

本帖最后由 apang 于 2013-7-25 22:02 编辑

思路:先将;字符替换成" "字符(两个双引号和一个空格),再交给for处理
  1. @echo off
  2. for %%a in ("%path:;=" "%") do (
  3.    if not defined %%~a (set "%%~a=1") else echo,重复字符:%%~a
  4. )
  5. pause
复制代码

TOP

返回列表