मैं कॉमा सीमांकित पूर्णांक की सूची कैसे निर्दिष्ट कर सकता हूं और प्रत्येक पूर्णांक के लिए बैच स्क्रिप्ट लूप है?


1

मेरे पास वर्तमान में एक बैच स्क्रिप्ट है जहां मैं "सेट / पी =" का उपयोग करता हूं। एक बार वेरिएबल में प्रवेश करने के बाद, स्क्रिप्ट उपरोक्त उपयोग करके 3 रोबोकॉपी कमांड करती है। 3 रोबोकॉपी कमांड खत्म होने के बाद, मैं यह पूछने के लिए एक और "सेट / पी फिर =" का उपयोग करता हूं कि क्या उपयोगकर्ता को इसे फिर से चलाने की आवश्यकता है। कभी-कभी इस स्क्रिप्ट को 10-15 पूर्णांक के खिलाफ चलाने की आवश्यकता होती है।

क्या पूर्णांक, अल्पविराम या अन्यथा की सूची देने का एक तरीका है, और प्रत्येक बाद के पूर्णांक के लिए स्क्रिप्ट लूप वापस है?

@echo off :again echo This script will download incident data in 2 steps. echo Step 1 will attempt to download any previously archived data from your home drive. echo Step 2 will attempt to download any files from the Live Incident folder. set /p incident=Please enter the Incident Number: robocopy "\\server1\share\%incident%" "C:\local-path\%incident%" *.* /ETA /MOV /E /R:1 /W:1 /MT:3 robocopy "\\server2\share\%incident%" "C:\local-path\%incident%" *.* /ETA /E /R:1 /W:1 /MT:2 robocopy "\\server3\share\%incident%" "C:\local-path\%incident%" *.* /ETA /E /R:1 /W:1 /MT:2 set /p again=Do you have another Incident you would like to try? if /i "%again:~,1%" EQU "Y" goto again if /i "%again:~,1%" EQU "N" exit /b


1
हाँ। यदि आप अपने प्रश्न को संपादित करते हैं और अपनी वर्तमान स्क्रिप्ट और उस इनपुट फ़ाइल को शामिल करते हैं जिसे आप उपयोग करना चाहते हैं तो हम मदद कर सकते हैं।
DavidPostill

@echo offlocal enableelayedexpansion for / F "tokens = * delims =," %% a (intergers.csv) करो (सेट करें घटना = %% एक प्रतिध्वनि! घटना! ... अपनी स्क्रिप्ट यहाँ जोड़ें / p ... )
अरना

जवाबों:


0
@echo off
:again
echo This script will download incident data in 2 steps.
echo Step 1 will attempt to download any previously archived data from your home drive.
echo Step 2 will attempt to download any files from the Live Incident folder.

set /p "incidents=Please enter the Incident Numbers separated by a comma:"

For %%I in (%Incidents%) Do Call :Process %%I
CHOICE /C YN /M "Do you have another Incident you would like to try?"
If %ErrorLevel% Equ 1 Goto :again
Goto :Eof

:Process %1
:: you might do a range check on the Incident no. %1
Echo Processing Incedent # %1
:: while testing 
goto :Eof
robocopy "\\server1\share\%1" "C:\local-path\%casenum%" *.* /ETA /MOV /E /R:1 /W:1 /MT:3
robocopy "\\server2\share\%1" "C:\local-path\%casenum%" *.* /ETA      /E /R:1 /W:1 /MT:2
robocopy "\\server3\share\%1" "C:\local-path\%casenum%" *.* /ETA      /E /R:1 /W:1 /MT:2
Goto :Eof

यदि आउटपुट ठीक लगता है तो goto :eofनिम्नलिखित को हटा दें:: while testing


इसने घटना संख्याओं को ठीक से सूचीबद्ध किया, लेकिन रोबोकॉपी रास्तों में सभी अल्पविराम से अलग की गई सूची थी, जैसा कि प्रत्येक व्यक्ति की व्यक्तिगत संख्या के लिए कई बार चलने के विपरीत था। -------------------------------------------------- ----------------------------- ROBOCOPY :: विंडोज के लिए मजबूत फाइल कॉपी ------------- -------------------------------------------------- ---------------- प्रारंभ: शुक्रवार, 24 मार्च, 2017 18:43:59 स्रोत: \\ server1 \ share \ 11111,22222,33333,44444,55555 \ Dest: C : \ स्थानीय-पथ \ 11111,22222,33333,44444,55555 \ _
जोर्डन एच

क्या आपने %incident%रोबोकॉपी कमांड में बदल दिया है %1? मुझे यह भी पता नहीं है कि var %casenum%स्टेम कहां से है।
लॉटपिंग्स

% कैसनम% को% घटना% माना जाता था, मैंने इसे ऊपर ठीक किया।
जॉर्डन एच

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