Board logo

标题: [文本处理] 【已解决】批处理变量路径替换,~转义? [打印本页]

作者: ttszuo    时间: 2015-8-13 10:57     标题: 【已解决】批处理变量路径替换,~转义?

本帖最后由 ttszuo 于 2015-8-21 23:06 编辑

想做一个复制文件路径到剪贴板的批处理,其中遇到需要处理变量路径替换的不知该从哪入手

批处理是获取文件%1的路径到剪贴板,当文件路径存在系统变量时优先获取尽可能长的系统变量路径

直观的说就是
%1路径为C:\WINDOWS\explorer.exe时
获取路径%SystemRoot%\explorer.exe
不是%SystemDrive%WINDOWS\explorer.exe或者C:\WINDOWS\explorer.exe

另外一个问题是~在变量中如何转义替换
  1. @echo off
  2. ::if "%~1"=="" exit
  3. set |find ":"|find /v ";"
  4. pause
复制代码

作者: aa77dd@163.com    时间: 2015-8-13 11:18

推荐你用 Path Copy Copy
http://pathcopycopy.codeplex.com/

作者: ttszuo    时间: 2015-8-14 18:14

谢谢,有安装FileMenu Tools,现在只是要批处理
作者: pcl_test    时间: 2015-8-14 18:22

查表法……
作者: ttszuo    时间: 2015-8-14 20:43

回复 4# pcl_test

怎么替换变量中的变量,还有怎么替换变量中的~字符
这里哪里出了问题,怎么替换不掉
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set lujing=C:\WINDOWS\explorer.exe
  4. set lujing=!lujing:^%SystemRoot^%=!
  5. echo.!lujing!
  6. set lujing1=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
  7. set lujing1=!lujing1:^^~=!
  8. echo.!lujing1!
  9. pause
复制代码

作者: CrLf    时间: 2015-8-14 21:18

~*= 这三个特殊字符是无解的,只能单个字符处理后拼接
http://www.bathome.net/viewthread.php?tid=6038
作者: pcl_test    时间: 2015-8-14 21:55

回复 5# ttszuo
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set lujing=C:\WINDOWS\explorer.exe
  4. set lujing=!lujing:%SystemRoot%\=!
  5. echo;%lujing%
  6. set lujing1=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
  7. for /f "tokens=1-4 delims=~" %%a in ("%lujing1%") do echo;%%a%%b%%c%%d
  8. >"%tmp%\$.vbs" echo;lujing1="C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp":WSH.Echo replace(lujing1,"~","")
  9. for /f "delims=" %%a in ('cscript /nologo "%tmp%\$.vbs"') do echo;%%a
  10. pause
复制代码

作者: WHY    时间: 2015-8-14 21:56

本帖最后由 WHY 于 2015-8-14 22:17 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1*delims==" %%i in ('set^|find ":"^|find /v ";"')do echo %%j/%%i>>~tmp.$
  4. set "strPath=C:\Program Files\Common Files\Adobe"
  5. for /f "tokens=1* delims=/" %%i in ('sort /r ~tmp.$') do (
  6.     set "strPath=!strPath:%%i=%%%%j%%!"
  7. )
  8. echo !strPath!
  9. pause
复制代码
原来楼主要拖放操作




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2