Подвійний клік на пакетний файл не працює, оскільки шлях до файлу всередині скрипта містить пробіл


0

Нижче мій batchscript.I збережений файл з розширенням file.bat і я двічі натиснув на нього. Він не показує нічого, оскільки шлях до файлу містить пробіл (у set file="C:\SUPPORT\APAC SIT\NewtextDoc.txt" )

Якщо я використовую set file="C:\SUPPORT\APACSIT\NewtextDoc.txt" тоді він працює.
Якщо я використовую set file="C:\SUPPORT\APAC SIT\NewtextDoc.txt" тоді він не працює.

@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:\SUPPORT\APAC SIT\NewtextDoc.txt"
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

Я не думаю, що я міг би повністю зрозуміти цю ідею, але чи намагалися ви уникнути пробілів? Значення подвійного цитування шляху, що містить пробіли у вашому сценарії " ".
w17t

PS ^ (каретка) - це інший рятувальний символ, інтерпретований командним рядком
w17t

у моєму batchscript шлях задається файлом == "C: ПІДТРИМКА. APAC SIT \ t
suvarna

коли я запускаю пакетний сценарій за допомогою командного вікна, він працює, змінюючи подвійні лапки. але якщо я двічі клацніть на файлі bat, він не працює
suvarna

Ви спробували видалити подвійні лапки з set 's Призначення і уникнути одного примірника простору ^ характер, як APAC^ SIT?
w17t

Відповіді:


0
  • Рядки, що містять рядок cmd отруйний символів у змінних з використанням подвійних лапок при визначенні змінних :
    • set "_nl=& echo."
    • set "_file=path with spaces\name.ext"
    • (є лише кілька рідкісних обставин лише там, де потрібна інша схема, що вислизає)
  • і потім використовувати змінні у відповідний спосіб :
    • незакритий: echo WARNING !!!%_nl%Scheduler File is ^=%_size% bytes
    • втік: FOR /F "usebackq delims=" %%A IN ('"%_file%"') DO set "_size=%%~zA"

Зауважте, що імена змінних, визначені в наступному сценарії, мають префікс a _ низька лінія (підкреслення) для легкого налагодження, див SET _&PAUSE налагодження (тимчасовий) вивід.

Коментується сценарій :

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

set "_nl=& echo."                                  escape ampersand by double quotes
set "_file=D:\bat\odds and ends\a b\testfile.txt"  escape spaces using double quotes
rem set "_file=C:\SUPPORT\APAC SIT\NewtextDoc.txt" 

set "_maxbytesize=0"                    keep using double quotes even if unnecessary

if not exist "%_file%" (
    set /A "_size=_maxbytesize-1"
    echo "%_file%" does not exist
) else (
    FOR /F "usebackq delims=" %%A IN ('"%_file%"') DO set "_size=%%~zA"
)

echo debugging output should show variables _file, _maxbytesize, _nl, _size 
SET _&PAUSE

if %_size% LEQ %_maxbytesize% (
    echo WARNING !!!%_nl%Scheduler File is ^=%_size% bytes
    echo Please do not process invoices, contact Webcenter Support
) else (
    echo Scheduler File OK%_nl%"%_file%" filesize is %_size% bytes
)
PAUSE

Вихідні дані :

==> rename "D:\bat\odds and ends\a b\testfile.txt" testfilea.txt

==> set _
Environment variable _ not defined

==> D:\bat\SU\1130895.bat
"D:\bat\odds and ends\a b\testfile.txt" does not exist
debugging output should show variables _file, _maxbytesize, _nl, _size
_file=D:\bat\odds and ends\a b\testfile.txt
_maxbytesize=0
_nl=& echo.
_size=-1
Press any key to continue . . .
WARNING !!!
Scheduler File is =-1 bytes
Please do not process invoices, contact Webcenter Support
Press any key to continue . . .

==> rename "D:\bat\odds and ends\a b\testfilea.txt" testfile.txt

==> D:\bat\SU\1130895.bat
debugging output should show variables _file, _maxbytesize, _nl, _size
_file=D:\bat\odds and ends\a b\testfile.txt
_maxbytesize=0
_nl=& echo.
_size=13
Press any key to continue . . .
Scheduler File OK
"D:\bat\odds and ends\a b\testfile.txt" filesize is 13 bytes
Press any key to continue . . .

==>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.