我需要在调用批处理文件时解决UNC错误。
我有一个名为Control.bat的文件。当我打电话给它时,我用一个UNC目录输入来调用它。
FX
control.bat \\MY_UNC_SEARCHWAY\test\test
我该如何使这项工作?我知道我可以使用pushd来实现它,但这不会帮助我,是吗?
我的剧本:
@echo off
setlocal enabledelayedexpansion
set i=0
set testname=%1
REM list files sorted to date and get the sizes of the latest two of them:
for /f "delims=" %%f in ('dir /o-d /b %1') do (
echo Kontroll av fil: %%f
set /a i+=1
if !i! gtr 2 goto :out
set size!i!=%%~zf
set name!i!=%%~nxf
)
:out
echo Totalt antal filer i katalogen: %i%
echo Fil1: %name1% = %size1%
echo Fil2: %name2% = %size2%
set /a diff=size2-size1
echo Difference: %diff%
答案 0 :(得分:1)
问题在于:~
命令或for
脚本中的.bat
argument or parameter modifier处理字符串(即不文件对象)和无关心关于文件的存在。
因此%%~zf
返回文件%%~f
的大小。如果它不是完全限定,它将返回当前目录中该文件名(不存在的?)的文件大小(或使用this rules if qualified partially or relatively),即%%~zf
返回应该是空字符串(或类似null
的字符串,扩展为set "size!i!=%%~zf"
中的空字符串)。
因此,使用for /f "delims=" %%f in ('dir /o-d /b /s %1') do (
与/s
切换或(可能更好)
pushd %testname%
for /f "delims=" %%f in ('dir /o-d /b') do (
echo Kontroll av fil: %%f
set /a i+=1
if !i! gtr 2 goto :out
set size!i!=%%~zf
set name!i!=%%~nxf
)
popd
更多资源:pushd
和UNC Network paths