2011-03-03 17 views
8

मैं नीचे करने के लिए कुछ इसी तरह पूरा करने के लिए उम्मीद कर रहा हूँ, लेकिन pcutmp3 साथ:एकाधिक फ़ाइलों के लिए बैच फ़ाइल खींचें और छोड़ें?

Drag and drop batch file for multiple files?

मैं मुसीबत अतिरिक्त जॉय मैं आमतौर पर ऐसा नहीं करते हैं के रूप में बनाया के आसपास मेरे सिर लपेटकर आ रही है, लेकिन मुझे लगता है एक बैच फ़ाइल पर एक से अधिक फ़ाइलों (क्यू) ड्रॉप के लिए इच्छुक रहा हूँ और यह एक बार से अधिक चलने के बाद, वह राशि है जो बैच फ़ाइल में निम्नलिखित लाइनों के साथ क्या हो रहा है:

@echo off 
title pcutmp3 
cd /d "F:\pcutmp3" 
java -jar pcutmp3.jar --cue %1 --dir "F:\Test" 
pause 
exit 

जोई का कोड अनुकूल मैं कोशिश की है ... लेकिन इसका कोई फायदा नहीं हुआ (मुझे कोई संकेत नहीं है कि मैं क्या कर रहा हूं)

किसी भी मदद के लिए अग्रिम धन्यवाद!

उत्तर

8
@echo off 
title pcutmp3 
cd /d "F:\pcutmp3" 

:again 
if "%~1" == "" goto done 

java -jar pcutmp3.jar --cue "%~1" --dir "F:\Test" 

shift 
goto again 

:done 
pause 
exit 

यह आपका मूल "सभी तर्क खाएं" लूप है। महत्वपूर्ण हिस्सा shift कीवर्ड, जो %1 खाती है, और एक एक करके सभी तर्कों नीचे बदलाव (ताकि %2 हो जाता है कि %1, %3%2 हो जाता है, आदि)

इसलिए, यदि आप ऐसा तरह चलाएँ:

pcutmp3.bat a b c 

यह बहुत की तरह जावा फोन करेगा:

java -jar pcutmp3.jar --cue "a" --dir "F:\Test" 
java -jar pcutmp3.jar --cue "b" --dir "F:\Test" 
java -jar pcutmp3.jar --cue "c" --dir "F:\Test" 
+0

हाय माइक, आपकी मदद के लिए धन्यवाद! मैं बस इसके ऊपर .cue फाइलों को छोड़कर बैच चला रहा था। आपने जो कहा वह कोशिश करने के बाद मुझे बस '/dir_path/test.cue "मिल रहा है" इस समय अप्रत्याशित "बिल्कुल सही नहीं है क्यों ...? एक बार फिर धन्यवाद! – ar4s

+0

मेरा बुरा! मैं भूल गया कि एक्सप्लोरर फ़ाइल नाम उद्धृत करेगा। असल में, यह 'if "" somefile \ blahbah "" == "" जा रहा था, और यह सभी अतिरिक्त उद्धरण पसंद नहीं था। मैंने उद्धरण को सही तरीके से पट्टी करने के लिए स्क्रिप्ट को अद्यतन किया है। साथ ही, इस परिवर्तन के साथ, बैच फ़ाइल अब डीओएस संगत नहीं है :( –

+0

ठीक है, हाँ यह निश्चित रूप से काम करता है। मैं आपकी मदद की सराहना करता हूं। चीयर्स! – ar4s

6

%1, पाली या %* के साथ काम खींचेंसाथ विफल हो सकता हैड्रॉप, क्योंकि एक्सप्लोरर बहुत स्मार्ट नहीं है, जब यह कमांड लाइन बनाता है।

फ़ाइलें Cool&stuff.cue तरह एक्सप्लोरर द्वारा उद्धृत नहीं कर रहे हैं ताकि आप
pcutmp3.bat Cool&stuff.cue

%1 में

तो जैसे एक cmdline केवल Cool भी %* में केवल Cool है मिलता है, लेकिन बाद pcutmp3.bat समाप्त होता है, cmd.exe stuff.cue निष्पादित करने का प्रयास करता है।

इस सामग्री को संभालने के लिए आप इसका उपयोग कर सकते हैं, यह cmdcmdline चर का उपयोग कर सभी फ़ाइल नामों को पकड़ता है।

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
rem *** Take the cmd-line, remove all until the first parameter 
rem *** Copy cmdcmdline without any modifications, as cmdcmdline has some strange behaviour 
set "params=!cmdcmdline!" 
set "params=!params:~0,-1!" 
set "params=!params:*" =!" 
set count=0 

rem Split the parameters on spaces but respect the quotes 
for %%G IN (!params!) do (
    set /a count+=1 
    set "item_!count!=%%~G" 
    rem echo !count! %%~G 
) 

rem list the parameters 
for /L %%n in (1,1,!count!) DO (
    echo %%n #!item_%%n!# 
) 
pause 

REM ** The exit is important, so the cmd.exe doesn't try to execute commands after ampersands 
exit 

बीटीडब्ल्यू। 8191 अक्षरों की "मानक" बैच लाइन सीमा के बावजूद ~ 2048 वर्णों के ड्रॉप ऑपरेशन ड्रैग & ड्रैग के लिए एक लाइन सीमा है।

संबंधित मुद्दे