अमान्य सिंटैक्स त्रुटि सेट / पी


0

मेरे पास निम्न कार्य है जो इस तरह काम करता है: आप एक स्ट्रिंग इनपुट करते हैं जो समान है: text text=text इस तरह: call :afterchar text text=text और इसके साथ आउटपुट text=text एक नया बनाने के बिना एक लाइन पर। जब यह वर्तमान में अच्छी तरह से काम कर रहा है, तो यह पहली बार चलाने पर "इस कमांड का सिंटैक्स गलत है" भी आउटपुट करता है। मुझे समझ नहीं आ रहा है कि इस त्रुटि को क्या ट्रिगर किया जा रहा है।

@echo off
:read
shift
if "%1"=="" set err=2 & goto help
if "%2"=="where" goto where
set DB=%1.db
if not exist "C:\users\Public\Temp\%DB%"  call :c 0c "Database not found: %2" & exit /b 1
setlocal EnableDelayedExpansion
set numline=0
for /f "tokens=1,2,3,4,5,6,7,8,9,10* delims=# skip=1" %%A in (C:\users\Public\Temp\%DB%) do (
    set /a numline+=1
    if not "%%A"=="" call :afterchar %%A
    if not "%%B"=="" call :afterchar %%B
    if not "%%C"=="" call :afterchar %%C
    if not "%%D"=="" call :afterchar %%D
    if not "%%E"=="" call :afterchar %%E
    if not "%%F"=="" call :afterchar %%F
    if not "%%G"=="" call :afterchar %%G
    if not "%%H"=="" call :afterchar %%H
    if not "%%I"=="" call :afterchar %%I
    if not "%%J"=="" call :afterchar %%J
    echo.
)
goto skpp

:afterchar
echo|set /p="  %2=%3  "
exit /b




:skpp
if %errorlevel%==0 call :C 0a "Success."
exit /b

आप के बारे में एक सवाल पूछ रहा हूँ For Loop Delims to extract text और सिर्फ एक सबरूटिन पोस्ट किया है जो फॉर-लूप से संबंधित नहीं है। यहाँ बहुत से टेलीपैथिक लोग हैं, लेकिन मुझे लगता है कि यहां तक ​​कि वे आपके द्वारा प्रदान की गई कैच -22 जानकारी में आपकी मदद नहीं कर पाएंगे
Alex

क्षमा करें मैं इसे बदलना भूल गया: डी
Mark Deven

कुंआ <nul set /p "dummy=blah" आमतौर पर newline के बिना कुछ आउटपुट करने के लिए उपयोग किया जाता है। जांचें कि क्या आउटपुट के साथ कुछ भी नहीं है Ìf "%2%3" equ "" exit
LotPings

जवाबों:


1

जब आप अपने उदाहरण में दिए गए कोड को निष्पादित करते हैं,
कोड प्रवाह सबरूटीन के माध्यम से चलता है क्योंकि वहाँ नहीं है goto :eof या Exit /b लेबल के सामने :afterchar इसे रोकने के लिए।

चूंकि इस बार मुख्य बैच में कोई तर्क पारित नहीं किया गया है, इसलिए निष्पादित करने का प्रयास करें:

echo | set /p="  =  "

त्रुटि का कारण बनता है। यदि आप सेट के साथ बैच निष्पादित करते हैं तो आप इसे देखेंगे echo on

:: Q:\Test\2018\07\28\SU_1344049.cmd

call :afterchar text text=text

:: here belongs a termination
goto :eof

:afterchar
echo|set /p="  %2=%3  "
exit /b

मैं नहीं देखता कि कैसे, संपादित करने के लिए अपने पूरे कोड को जोड़ा
Mark Deven

बैच में एक सबरूटीन का कोई निहित अलगाव नहीं है, आपको इसे स्वयं करना होगा, मैं इसे अब उपरोक्त कोड में डालूंगा।
LotPings

1
अपडेट देखने के लिए मेरे ब्राउज़र को देर तक रीफ़्रेश किया, यह बिलकुल अलग है लेकिन वही समस्या जिसे आप उप को केवल एक तर्क और कमांड के साथ कहते हैं echo|set /p=" %2=%3 " का मूल्यांकन करता है echo|set /p=" = " अवैध सिंटैक्स।
LotPings

समझा। ऐसा इसलिए है क्योंकि अंतिम पंक्ति एक हैशटैग के साथ समाप्त होती है। क्या कोई ऐसा तरीका है जिससे मैं इसे संभाल सकता हूं और इसकी भविष्यवाणी कर सकता हूं? संपादित करें मन मैं एक सरल तरीका देखें। मदद के लिए शुक्रिया
Mark Deven
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.