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

[文本处理] 【已解决】批处理变量路径替换,~转义?

本帖最后由 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
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

TOP

谢谢,有安装FileMenu Tools,现在只是要批处理

TOP

查表法……

TOP

回复 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
复制代码

TOP

~*= 这三个特殊字符是无解的,只能单个字符处理后拼接
http://www.bathome.net/viewthread.php?tid=6038
1

评分人数

TOP

回复 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
复制代码
1

评分人数

TOP

本帖最后由 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
复制代码
原来楼主要拖放操作
1

评分人数

TOP

返回列表