2016-09-29 190 views
-1

enter image description here我爲我的項目編寫了批處理腳本,因爲路徑中包含空格,它不起作用。 能否請你幫我批處理腳本的文件路徑中的空間

@ECHO OFF 
REM The below command will look for the size of file on the server and inform the user if scheduler is down. 

setlocal 
set nl=^& echo. 

set file="C:\Program Files (x86)\Common Files\Zoom\Support\CptControl.exe" 
set maxbytesize=0 

FOR /F "usebackq" %%A IN ('%file%') DO set size=%%~zA 

if %size% EQU %maxbytesize% (echo WARNING !!! %nl%Scheduler File is ^= %maxbytesize% bytes%nl%Please do not process invoices, contact Webcenter Support) else (echo Scheduler File OK) 

PAUSE 

回答

1

將報價出來的價值,但保護asignment

set "file=C:\Program Files (x86)\Common Files\Zoom\Support\CptControl.exe" 

沒有必要for /f讀取文件的大小,使用簡單for。此外 記不存儲在%文件%引號現在都包含在命令

FOR %%A IN ("%file%") DO set "size=%%~zA" 

只是一個會話捕獲

Capture of a test code

測試代碼

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    set "file=C:\Program Files (x86)\Windows NT\Accessories\WordPad.exe" 

    echo File to process ------------------------------------------------------------ 
    echo "%file%" 
    echo(

    echo Data from dir command ------------------------------------------------------ 
    dir "%file%" | findstr /r /c:"^[^ ]" 
    echo(

    echo Data from for command ------------------------------------------------------ 
    for %%a in ("%file%") do (
     echo %%~fa : %%~za 
     set "size=%%~za" 
    ) 
    echo Reported size: %size% 
    echo(
+0

它沒有爲我工作用它在下面,有沒有它是文件路徑中的任何其他的解決辦法有空間 – suvarna

+0

@ suvarna,對不起,但是,沒有工作'是什麼意思? **如何**不起作用?觀察到的行爲是什麼?它與預期的行爲有什麼不同? –

+0

理想情況下,它必須讀取文件大小,並且必須與邏輯中提供的大小進行比較,如果我的文件路徑沒有空格,則我在腳本中提供的邏輯正在工作。 – suvarna

0

首先,可以將路徑設置爲不加引號,然後稍後引用它:

set filepath=C:\Program Files (x86)\Common Files\Zoom\Support 

%之間

"%filepath%\CptControl.exe" 

或文件名稱用空格

"%filepath%\Cpt Control.exe" 
+0

@ECHO OFF REM以下命令將查找服務器上的文件大小,並通知用戶計劃程序是否已關閉。 setlocal set nl = ^&echo。 組文件路徑= C:\程序文件(x86)\共同文件\縮放\支持 「%文件路徑%\ CptControl.exe」 組maxbytesize = 0 FOR/F 「有usebackq」 %% A IN( '%file%')DO set size = %%〜zA if%size%EQU%maxbytesize%(echo WARNING !!!%nl%Scheduler File是^ =%maxbytesize%bytes%nl%請勿處理髮票,聯繫Webcenter支持)else(echo Scheduler File OK) – suvarna

+0

set filepath = C:\ Program Files文件(x86)\ Common Files \ Zoom \支持 「%filepath%\ CptControl.exe」 – suvarna

+0

我嘗試了你所說的,沒有得到輸出 – suvarna

相關問題