2016-09-29 1 views
-1

enter image description here Ich schrieb Batch-Skript für mein Projekt, da der Pfad Speicherplatz enthält, es funktioniert nicht. Könnten Sie mir bitteSpeicherplatz im Dateipfad des Batch-Skripts

@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 

Antwort

1

Platz Zitate aus dem Wert helfen, aber die asignment

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

Es besteht keine Notwendigkeit für for /f Schutz der Dateigröße zu lesen, ein einfaches for verwenden. Auch Note die Zitate nicht in% Datei% gespeichert werden nun im Befehl enthalten

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

Nur eine Sitzung Capture

Capture of a test code

Der Testcode

@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

Es funktioniert nicht für mich gearbeitet, Gibt es eine alternative Lösung für den Dateipfad, der ist mit Leerzeichen – suvarna

+0

@suvarna, sorry aber, was 'nicht funktioniert' bedeutet? ** Wie ** hat es nicht funktioniert? Was ist das beobachtete Verhalten? Wie unterscheidet es sich vom erwarteten Verhalten? –

+0

Idealerweise muss es die Dateigröße lesen und es muss mit der Größe verglichen werden, die in der Logik bereitgestellt wird, wenn mein Dateipfad ohne Leerzeichen ist, funktioniert die Logik, die ich im Skript angegeben habe. – suvarna

0

Zuerst Sie kann den Pfad als unquoted setzen und dann einfach später angeben:

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

und verwenden Sie es unten in zwischen %

"%filepath%\CptControl.exe" 

oder Dateinamen mit Leerzeichen

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

@ECHO OFF REM Der folgende Befehl sucht nach der Größe der Datei auf dem Server und informiert den Benutzer, wenn der Scheduler nicht aktiv ist. setlocal set nl =^& echo. Satz filepath = C: \ Program Files (x86) \ Gemeinsame Dateien \ Zoom \ Support "% filepath% \ CptControl.exe" Satz MaxByteSize = 0 FOR/F "usebackq" %% A IN ('% file%') DO set size = %% ~ zA wenn% size% EQU% maxbytesize% (echo WARNUNG !!!% nl% Scheduler Datei ist^=% maxbytesize% bytes% nl% Bitte keine Rechnungen bearbeiten , Kontakt Webcenter Support) else (echo Planer Datei OK) – suvarna

+0

set filepath = C: \ Programme (x86) \ Gemeinsame Dateien \ Zoom \ Support "% filepath% \ CptControl.exe" – suvarna

+0

Ich habe versucht, wie Sie gesagt, aber wieder ich wurde nicht ausgegeben – suvarna

Verwandte Themen