मैं एक फ़ोल्डर में फ़ाइलों का नाम बदलना चाहता हूं, नए नामों में फ़ोल्डर का नाम प्रीफ़िक्स करना। C:\house chores\
सभी में फ़ाइलों का नाम दिया जाएगा house chores - $old_name
।
मैं एक फ़ोल्डर में फ़ाइलों का नाम बदलना चाहता हूं, नए नामों में फ़ोल्डर का नाम प्रीफ़िक्स करना। C:\house chores\
सभी में फ़ाइलों का नाम दिया जाएगा house chores - $old_name
।
जवाबों:
विकल्प 1: Windows PowerShell का उपयोग करना
विंडो मेनू खोलें। टाइप करें: "पॉवरशेल" और 'विंडोज पॉवरशेल' कमांड विंडो खोलें।
इच्छित फ़ाइलों के साथ गोटो फोल्डर: उदाहरण के लिए cd "C: \ house chores" सूचना: पते में रिक्त स्थान शामिल होने पर "" उद्धरण शामिल होना चाहिए।
आप सभी फ़ाइलों को फ़ोल्डर में देखने के लिए 'dir' का उपयोग कर सकते हैं। 'का उपयोग कर निम्नानुसार कमांड के लिए 'dir' के आउटपुट को पाइपलाइन करेगा।
नोट: 'dir' 'Get-ChildItem' का एक उपनाम है। देखें: विकी: cmdlets । एक और कार्यक्षमता प्रदान कर सकता है। उदाहरण के लिए 'dir -recurse' सभी फ़ाइलों, फ़ोल्डरों और उप-फ़ोल्डरों को आउटपुट करता है।
क्या होगा अगर मैं केवल फ़ाइलों की एक सीमा चाहता हूं?
इसके बजाय 'dir |' मैं उपयोग कर सकता हूं:
dir | where-object -filterscript {($_.Name -ge 'DSC_20') -and ($_.Name -le 'DSC_31')} |
उपसर्ग के रूप में निर्देशिका नाम के साथ बैच-नाम बदलने के लिए:
dir | Rename-Item -NewName {$_.Directory.Name + " - " + $_.Name}
विकल्प 2: कमांड प्रॉम्प्ट का उपयोग करना
फ़ोल्डर में प्रेस शिफ्ट + राइट-क्लिक करें: 'यहाँ खुले कमांड-विंडो' का चयन करें
for %a in (*.*) do ren "%a" "prefix - %a"
यदि बहुत सारी फाइलें हैं, तो इससे पहले '@echo ऑफ' कमांड जोड़ना अच्छा होगा और अंत में एक 'इको ऑन' कमांड।
do
) काम नहीं करता है - कुछ फ़ाइलों का नाम बदल दिए जाने के बाद, for
उन्हें नए नाम के तहत पाता है, फिर से उपसर्ग जोड़ते हुए जब तक फ़ाइल नाम की लंबाई सीमा नहीं हो जाती है।
ren was unexpected at this time.
कोई विचार मिलता है क्यों?
do
उनके उत्तर में यह शब्द गायब है। यह होना चाहिएfor %a in (.) do ren "%a" "prefix - %a"
यहां दो पॉवर्सशेल उत्तरों के साथ समस्या यह है कि उपसर्ग को डुप्लिकेट किया जा सकता है क्योंकि स्क्रिप्ट संभावित रूप से फ़ाइल से पहले और बाद में दोनों नाम से चलेगी, निर्देशिका के आधार पर इसका नाम बदला जा रहा है क्योंकि नाम बदलने की प्रक्रिया चलती है। इसके आस-पास जाने के लिए, बस -Exclude
विकल्प का उपयोग करें :
Get-ChildItem -Exclude "house chores-*" | rename-item -NewName { "house chores-" + $_.Name }
यह प्रक्रिया को एक से अधिक बार किसी एक फ़ाइल का नाम बदलने से रोकेगा।
मुफ्त सॉफ्टवेयर ' थोक नाम उपयोगिता ' भी अच्छी तरह से काम करता है (और उन्नत कार्यों के लिए भी शक्तिशाली है)। डाउनलोड और इंस्टॉलेशन में एक मिनट लगता है।
मूल वेबसाइट पर स्क्रीनशॉट और ट्यूटोरियल देखें ।
-
मैं चरण-दर-चरण स्क्रीनशॉट प्रदान नहीं कर सकता क्योंकि छवियों को क्रिएटिव कॉमन्स लाइसेंस के तहत जारी करना होगा , और मेरे पास सॉफ़्टवेयर के स्क्रीनशॉट नहीं हैं।
डिस्क्लेमर: मैं किसी भी तरह से उक्त सॉफ्टवेयर / कंपनी से जुड़ा नहीं हूं। मुझे अपने काम के लिए उत्पाद पसंद आया, यह ओपी और इसी तरह की आवश्यकताओं को पूरा करता है, इस प्रकार अनुशंसा करता है।
यह मेरे लिए काम करता है, पहले सीडी में निर्देशिका है कि आप फ़ाइल नाम को बदलना चाहते हैं और फिर निम्न आदेश चलाएँ:
Get-ChildItem | rename-item -NewName { "house chores-" + $_.Name }
मैं अपने बालों को फाड़ रहा था क्योंकि कुछ वस्तुओं के लिए, पुनर्नामित आइटम का फिर से नाम बदल दिया जाएगा (बार-बार, जब तक कि अधिकतम फ़ाइल नाम लंबाई तक नहीं पहुंच गया था)। यह Get-ChildItem और dir के आउटपुट को पाइप करने दोनों के लिए हो रहा था। मुझे लगता है कि वर्णानुक्रमिक क्रम में बदलाव के कारण नामांकित फाइलें उठाई गईं। मैंने इस समस्या को निम्नलिखित तरीके से हल किया:
Get-ChildItem -Path . -OutVariable dirs
foreach ($i in $dirs) { Rename-Item $i.name ("<MY_PREFIX>"+$i.name) }
इस "लॉक्स" के परिणाम $ बाल डेयर में गेट-चाइल्डइम द्वारा लौटाए गए हैं और आप इस डर के बिना उस पर पुनरावृति कर सकते हैं कि ऑर्डर बदल जाएगा या अन्य मज़ेदार व्यवसाय होगा।
डेव.गग का उपयोग करने के लिए टिप-एक्सक्लूड को भी इस समस्या को हल करना चाहिए, लेकिन यह एक अलग दृष्टिकोण है; शायद अगर फ़ाइलों का नाम बदला जा रहा है तो पहले से ही उपसर्ग में इस्तेमाल किया गया पैटर्न है।
(डिस्क्लेमर: मैं बहुत ज्यादा पॉवरशेल n00b हूं।)
मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन मैंने विभिन्न उत्तरों से बहुत कुछ सीखा है, लेकिन एक फ़ंक्शन के रूप में अपने स्वयं के समाधान के साथ आया। यह गतिशील रूप से मूल फ़ोल्डर को सभी फ़ाइलों के लिए उपसर्ग के रूप में जोड़ना चाहिए जो एक निश्चित पैटर्न से मेल खाता है, लेकिन केवल अगर इसमें पहले से मौजूद उपसर्ग नहीं है।
function Add-DirectoryPrefix($pattern) {
# To debug, replace the Rename-Item with Select-Object
Get-ChildItem -Path .\* -Filter $pattern -Recurse |
Where-Object {$_.Name -notlike ($_.Directory.Name + '*')} |
Rename-Item -NewName {$_.Directory.Name + '-' + $_.Name}
# Select-Object -Property Directory,Name,@{Name = 'NewName'; Expression= {$_.Directory.Name + '-' + $_.Name}}
}
https://gist.github.com/kmpm/4f94e46e569ae0a4e688581231fa9e00
@
इन@echo on
की आवश्यकता नहीं है। आप बस चले गए@echo off
।