समान आंशिक नाम के साथ फ़ाइल नाम कैसे हटाएं?


1

मेरे पास फ़ाइलनामों का एक समूह है जो टाइमस्टैम्पड (नैनोसेकंड के नीचे) हैं और मैं केवल एक फ़ाइल को प्रति सेकंड रखना चाहता हूं। उदाहरण के लिए, यहां कुछ फ़ाइल नाम दिए गए हैं:

11-14-29-033.jpg

(जिसका अर्थ है कि फ़ाइल 11 वें घंटे 14 वें मिनट 29 वें और 33 वें नैनोसेकंड पर दर्ज की गई थी)।

11-14-29-602.jpg
11-14-29-839.jpg
11-14-29-953.jpg
11-14-30-406.jpg
11-14-30-847.jpg
11-14-31-091.jpg
11-14-31-419.jpg
11-14-31-667.jpg
11-14-32-364.jpg
11-14-32-619.jpg
11-14-32-913.jpg
11-14-33-150.jpg
11-14-33-485.jpg
11-14-33-708.jpg
11-14-34-052.jpg
11-14-34-336.jpg
11-14-35-174.jpg
11-14-36-563.jpg
11-14-36-788.jpg
11-14-37-278.jpg
11-14-37-584.jpg
11-14-38-050.jpg
11-14-38-841.jpg
11-14-39-196.jpg
11-14-39-736.jpg
11-14-39-870.jpg
11-14-40-091.jpg
11-14-40-766.jpg
11-14-41-052.jpg
11-14-41-676.jpg

क्या कोई तरीका है कि मैं एक बैच फ़ाइल (विंडोज में) लिख सकता हूं, लेकिन प्रत्येक दूसरे पर 1 फ़ाइल को हटाने के लिए?


1
हो सकता है। से प्रारंभ करें for, के क्रमबद्ध आउटपुट का उपयोग करें dir। लूप में, फ़ाइल नाम के पहले 8 अक्षरों को सहेजें। जब यह फिर से आता है => हटाएं, अन्यथा => नया उपसर्ग सहेजें।
मेलेबियस

यह प्रश्न के सार में कुछ भी नहीं बदलता है, लेकिन मुझे "नैनोसेकंड" भाग पर गंभीरता से संदेह है। मिलीसेकंड - यह मैं विश्वास करूँगा।
कामिल मैकियोरोस्की

आप सही कामिल हैं
हेडली

जवाबों:


2

यह काम करना चाहिए:

@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET "source=C:\adjust\path"

FOR /R "%source%" %%F IN ("??-??-??-???.jpg") DO (
    SET "file_name=%%~nF"
    SET "file_name=!file_name:~0,-4!"
    REN "%%F" "!file_name!%%~xF" >nul 2>&1
)

FOR /R "%source%" %%G IN ("??-??-??-???.jpg") DO (
    DEL "%%G"
)

ECHO Done^^!
PAUSE

इस FOR /Rपाश हर का नाम बदल देगा .jpgसे करने के लिए फ़ाइल HH-MM-SS-MMMके लिए HH-MM-SSबस, पिछले 4 वर्ण निकाल दें जब तक कि फ़ाइल नाम पहले से ही मौजूद है। RENआदेश तो फ़ाइल का नाम नहीं होगा और यह बाद में हटा सकते हो जाएगा।


आपका कोड पहली फ़ाइल को छोड़कर सभी फ़ाइलों को हटाने के लिए लगता है जिसे "file_name! .Jpg" नाम दिया गया था। उदाहरण के रूप में प्रदान की जाने वाली फ़ाइलों की सूची में, नीचे दी गई फाइलें वही होंगी जो नष्ट नहीं की गई हैं: 11-14-29-033.jpg 11-14-30-406.jpg 11-14-31-091। jpg 11-14-32-364.jpg 11-14-33-150.jpg 11-14-34-052.jpg 11-14-35-174.jpg 11-14-36-563.jpg 11-14- 37-278.jpg 11-14-38-050.jpg 11-14-39-196.jpg 11-14-40-091.jpg 11-14-41-052.jpg मेरे पास प्रक्रिया के लिए हजारों फाइलें हैं और मैं प्रति सेकंड एक फ़ाइल रखना चाहते हैं और शेष छवियों को उसी सेकंड में छोड़ देते हैं।
हेले

@ हेले मैंने इसे अभी अपनी मशीन (विंडोज 10) पर परीक्षण किया और यह काम करता है। त्रुटियों को रोकने के लिए मैंने इसे थोड़ा समायोजित किया। क्या आप वाकई SETLOCAL EnableDelayedExpansionस्क्रिप्ट में रेखा हैं ?
FatalBulletHit

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