विंडोज: कॉपी फाइलों और डुप्लिकेट के बिना एक्सटेंशन बदलें


0

मेरे पास एक निर्देशिका है जिसमें विस्तार के बिना छवि फाइलें हैं। इसे हम कहते हैं D:\initial\। अब मैं उन फाइलों को D:\final\निर्देशिका पर कॉपी करना चाहता हूं और .jpgप्रत्येक फ़ाइल के लिए एक्सटेंशन बदलना चाहता हूं ।

ROBOCOPY का उपयोग करके मेरा समाधान:

@echo off

SET srcDir=D:\initial\
SET destDir=D:\final\

echo Copying files from %srcDir%
ROBOCOPY %srcDir% %destDir% /s /min:102400
echo Copying done

cd %destDir%

echo Renaming to JPG
ren *. *.jpg

हालाँकि, कुछ शर्तें हैं:

  1. केवल उन फाइलों को कॉपी करें जो आकार में 100 केबी से अधिक हैं।
  2. स्रोत निर्देशिका में फ़ाइलें हटाएं नहीं।
  3. स्रोत निर्देशिका निश्चित अवधि में होगी, नई फाइलें प्राप्त करेंगी; उन्हें गंतव्य निर्देशिका में कॉपी करें (मैन्युअल रूप से, यहां किसी भी स्वचालन की आवश्यकता नहीं है)

मेरा समाधान पहले दो शर्तों को पूरा करता है, लेकिन जब मैं नई फ़ाइलों के आने के बाद फिर से चलता हूं, तो पुराने को कॉपी किया जाता है और इस प्रकार नाम बदलने में त्रुटि होती है।


/MAXAGE:nविकल्प का उपयोग करें ?
DavidPostill

1
आपका तीसरा बिंदु कहता है कि आप इसे मैन्युअल रूप से करेंगे, तो समस्या कहां है?
सेठ

@ सेठ का मतलब था कि स्क्रिप्ट को समय-समय पर चलाने के लिए समयबद्ध नहीं होना चाहिए; यह मैन्युअल रूप से किया जा सकता है। हालाँकि, इसे डुप्लिकेट के लिए खाता होना चाहिए।
Slartibartfast

स्रोत निर्देशिका में फ़ाइलों का नाम बदलें और हमेशा की तरह रोबोकॉपी चलाएं। रोबोकॉपी को मौजूदा फ़ाइलों का अनुकूलन और छोड़ना चाहिए।
सेठ

जवाबों:


2

फ़ाइल आकार की जाँच करें और यदि गंतव्य फ़ाइल sourcefiles पर चलने के लिए मौजूद है।

और हर बार रोबोकॉपी लगाने के बजाय एक्स कॉपी का उपयोग करें जो यहां ओवरकिल होगा।

एक बार में विस्तार के साथ नए नाम की नकल करने से नाम बदलने की आवश्यकता समाप्त हो जाती है।

@echo off

SET "srcDir=D:\initial"
SET "destDir=D:\final"

echo Copying files from %srcDir%
For %%A in ("%srcDir%\*.") do (
    if %%~zA gtr 102400 if not exist "%destDir%\%%~nA.jpg" copy "%%~fA" "%destDir%\%%~nA.jpg" >NUL
)
echo Copying done

D:\final\D:\initial\file.jpgत्रुटि के साथ कॉपी करने की कोशिश करता हैDoes ... specify a file name or directory name on the target?
Slartibartfast

1
क्षमा करें, ~nड्राइव, पथ के बिना स्रोत फ़ाइल से केवल नाम का उपयोग करने वाले संशोधक को सम्मिलित करना भूल गया ।
लोटपिंग

अच्छी तरह से काम करता है, लेकिन अब यह हर बार पुष्टि पूछता है कि क्या लक्ष्य एक फ़ाइल या निर्देशिका है। इसके अलावा, जब मैं फिर से दौड़ता हूं, तो यह पूछता है कि क्या मैं सभी फाइलों (जो नहीं है) के लिए ओवरराइट करना चाहता हूं
Slartibartfast

1
यह मेरा दिन नहीं है, संशोधक चेक में भी गायब था। कृपया पुन: प्रयास करें।
लोटपिंग्स

1
चलो बिना x के कॉपी लेते हैं और हमें अच्छा होना चाहिए। संदेश को दबाने के लिए 1 file(s) copiedapppend >NULनकल करने के लिए
LotPings

0

xcopy <srcDir> <destDir>.<append>

उदाहरण xcopy c:\Photos_with no_extensions\* c:\Jpegs\*.jpg

या आपके लिए xcopy D:\initial\* D:\final\*.jpg

यह पहले निर्देशक की सभी फाइलों को दूसरे में कॉपी करेगा और अंत में .jpg जोड़ें। एक कमी यह है कि यह सिर्फ नए एक्सटेंशन पर जोड़ता है अर्थात file.pdf file.pdf.jpg बन जाएगा


धन्यवाद! और कैसे ओवरराइट के बारे में? क्या यह कमांड फ़ाइलों को उसी नाम से प्रतिस्थापित <destDir>करता है या यह उन्हें कॉपी करने में त्रुटि देता है?
Slartibartfast
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.