标题: [其他] 批处理如何处理UNC路径? [打印本页]
作者: yuan_53770 时间: 2010-9-26 17:07 标题: 批处理如何处理UNC路径?
我用以下批处理- @echo off
- rem 使用 reg 命令读注册表获取路径并作为路径变量
- for /f "tokens=2*" %%a in ('REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WMDrive" /v ImagePath^|findstr "ImagePath"') do (
- set MyPath=%%b
- )
- echo %MyPath%
- pause
复制代码
得到了这样的结果:\??\C:\WINDOWS\system32\drivers\WMDrive.sys
其中,我想利用\??\C:\WINDOWS\system32\drivers这个路径作为下面这个批处理md5校检的路径- @echo off
- title=md5sum
- echo ************************************
- echo 本程式用于md5sum校验
- echo ************************************
- echo.
- set site=C:\WINDOWS\system32\drivers
- cd /d %site%
- for /f "delims=" %%a in ('dir /b /od %site%') do set WMDrive.sys=%%a
- if "%WMDrive.sys%"=="" goto eof
- md5sum %WMDrive.sys%
- goto theend
- :eof
- echo 位置:%site% 中没有文件
- :theend
- echo. &pause
复制代码
不知可以吗?
也就是说,如果把这两个批处理合在一起执行,如何让第二个批处理采用第一个批处理取得的路径,因为路径里含有\??\这样的字符,不懂如何修改?
希望知道的兄弟帮一下,谢谢。
作者: Batcher 时间: 2010-9-26 17:42
- @echo off
- title md5sum
- echo ************************************
- echo 本程式用于md5sum校验
- echo ************************************
- echo.
- set "site=C:\WINDOWS\system32\drivers"
- cd /d "%site%"
- for /f "delims=" %%a in ('dir /b /od "%site%"') do (
- set "WMDrive.sys=%%a"
- )
- 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"
- )
- if "%WMDrive.sys%" -neq "%MyPath%" (
- goto :NoFile
- )
- md5sum %WMDrive.sys%
- goto :end
- :NoFile
- echo 位置:%site% 中没有文件
- :end
- echo. &pause
复制代码
作者: q120072949 时间: 2010-9-26 17:47
cd 路径
比如cd c:\
但是跳转的路径只局限于这个批处理的盘符
如果要跳转到其他盘必须加参数/d
cd /d 路径
比如批处理在C盘运行要把运行路径转到D盘
cd /d d:\
2个批处理衔接可以赋值
batcher已经给了代码
cd /d "%site%"
作者: yuan_53770 时间: 2010-9-26 23:07
我试了batcher给的代码,不知为何一闪而过,什么也没有,也许大家没明白我的意思,其实我只是想先用第一个批处理得到sys文件的路径,然后第二个批处理再引用这个路径校检md5,其实就是unc路径变成本地路径
不过还是在batcher的代码中受益,关键就在于把
"tokens=2*" 改成 "tokens=2 delims=:"
set MyPath=%%b 改成 set "MyPath=%%~dpa"
即可。在此严重感谢batcher大大的帮助!
作者: yuan_53770 时间: 2010-9-26 23:08
@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
作者: yuan_53770 时间: 2010-9-26 23:33
但放到别的盘符就不行了,唉
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |