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

[其他] 批处理如何处理UNC路径?

我用以下批处理
  1. @echo off
  2. rem 使用 reg 命令读注册表获取路径并作为路径变量
  3. for /f "tokens=2*" %%a in ('REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WMDrive" /v ImagePath^|findstr "ImagePath"') do (
  4.   set MyPath=%%b
  5. )
  6. echo %MyPath%
  7. pause
复制代码
得到了这样的结果:\??\C:\WINDOWS\system32\drivers\WMDrive.sys
其中,我想利用\??\C:\WINDOWS\system32\drivers这个路径作为下面这个批处理md5校检的路径
  1. @echo off
  2. title=md5sum
  3. echo ************************************
  4. echo    本程式用于md5sum校验
  5. echo ************************************
  6. echo.
  7. set site=C:\WINDOWS\system32\drivers
  8. cd /d %site%
  9. for /f "delims=" %%a in ('dir /b /od %site%') do set WMDrive.sys=%%a
  10. if "%WMDrive.sys%"=="" goto eof
  11. md5sum %WMDrive.sys%
  12. goto theend
  13. :eof
  14. echo 位置:%site% 中没有文件
  15. :theend
  16. echo. &pause
复制代码
不知可以吗?
也就是说,如果把这两个批处理合在一起执行,如何让第二个批处理采用第一个批处理取得的路径,因为路径里含有\??\这样的字符,不懂如何修改?
希望知道的兄弟帮一下,谢谢。

  1. @echo off
  2. title md5sum
  3. echo ************************************
  4. echo    本程式用于md5sum校验
  5. echo ************************************
  6. echo.
  7. set "site=C:\WINDOWS\system32\drivers"
  8. cd /d "%site%"
  9. for /f "delims=" %%a in ('dir /b /od "%site%"') do (
  10.     set "WMDrive.sys=%%a"
  11. )
  12. rem 使用 reg 命令读注册表获取路径并作为路径变量
  13. for /f "tokens=2 delims=:" %%a in ('REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WMDrive" /v ImagePath^|findstr "ImagePath"') do (
  14.     set "MyPath=%%~dpa"
  15. )
  16. if "%WMDrive.sys%" -neq "%MyPath%" (
  17.     goto :NoFile
  18. )
  19. md5sum %WMDrive.sys%
  20. goto :end
  21. :NoFile
  22. echo 位置:%site% 中没有文件
  23. :end
  24. echo. &pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

cd 路径
比如cd c:\
但是跳转的路径只局限于这个批处理的盘符
如果要跳转到其他盘必须加参数/d
cd /d 路径
比如批处理在C盘运行要把运行路径转到D盘
cd /d d:\
2个批处理衔接可以赋值
batcher已经给了代码
cd /d "%site%"

TOP

我试了batcher给的代码,不知为何一闪而过,什么也没有,也许大家没明白我的意思,其实我只是想先用第一个批处理得到sys文件的路径,然后第二个批处理再引用这个路径校检md5,其实就是unc路径变成本地路径

不过还是在batcher的代码中受益,关键就在于把
"tokens=2*" 改成 "tokens=2 delims=:"
set MyPath=%%b 改成 set "MyPath=%%~dpa"
即可。在此严重感谢batcher大大的帮助!

TOP

@echo off
rem 使用 reg 命令读注册表获取路径并作为路径变量
for /f "tokens=2 delims=:" %%a in ('REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WMDrive" /v ImagePath^|findstr "ImagePath"') do (
    set "MyPath=%%~dpa"
)
echo %MyPath%
pause
@echo off
title=md5sum
echo ************************************
echo    本程式用于md5sum校验
echo ************************************
echo.

cd /d %MyPath%

for /f "delims=" %%a in ('dir /b /od %MyPath%') do set WMDrive.sys=%%a
if "%WMDrive.sys%"=="" goto eof

md5sum %WMDrive.sys%
goto theend

:eof
echo 位置:%MyPath% 中没有文件

:theend
echo. &pause

TOP

但放到别的盘符就不行了,唉

TOP

返回列表