UNC在批处理文件中

时间:2015-03-19 09:31:22

标签: windows batch-file cmd

我需要在调用批处理文件时解决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%

1 个答案:

答案 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

更多资源:pushdUNC Network paths