विंडोज में क्या कमांड यूनिक्स से पुनरावर्ती चाल / नाम बदलने का आदेश देता है?
विंडोज में क्या कमांड यूनिक्स से पुनरावर्ती चाल / नाम बदलने का आदेश देता है?
जवाबों:
XP की for
कमांड का उपयोग करें । कमांड लाइन से उदाहरण के लिए (एक बैच फ़ाइल उपयोग के %%x
बजाय) एक पुनरावर्ती चाल करने के लिए:
for /r %x in (foo) do move "%x" "drive:\path\bar"
पुनरावर्ती नाम बदलने के लिए:
for /r %x in (*.c) do ren "%x" *.cpp
उदाहरण बैच:
for /r "< DIR >" %%x in (*.c) do ren "%%x" *.cpp
*.*
?
robocopy "C:\Source Folder" "C:\Destination Folder" /E /COPYALL /XJ
Description of parameters:
/E - copy subdirectories, including Empty ones (/S to exclude empty ones)
/COPYALL - COPY ALL file info (equivalent to /COPY:DATSOU)
/XJ - eXclude Junction points and symbolic links. (normally included by default).
मैं अपने विंडोज एक्सपी SP2 बॉक्स में मूव कमांड के साथ एक छोटा सा उदाहरण चलाता हूं और यह काम करता है। सभी फ़ाइलों और निर्देशिकाओं को स्रोत से गंतव्य पर ले जाया गया। स्रोत और भाग्य निर्देशिका नाम हैं।
स्रोत गंतव्य ले जाएँ
ver Microsoft Windows XP [संस्करण 5.1.2600]
चाल /? फ़ाइलों को ले जाता है और फ़ाइलों और निर्देशिकाओं का नाम बदल देता है। एक या अधिक फ़ाइलों को स्थानांतरित करने के लिए: MOVE [/ Y | / -Y] [ड्राइव:] [पथ] फ़ाइलनाम १ [, ...] गंतव्य एक निर्देशिका का नाम बदलने के लिए: MOVE [/ Y | / -Y] [ड्राइव:] [पथ] dirname1 dirname2 [ड्राइव:] [पथ] फ़ाइल नाम १ फ़ाइल के स्थान और नाम को निर्दिष्ट करता है या फ़ाइलें जिन्हें आप ले जाना चाहते हैं। गंतव्य फ़ाइल का नया स्थान निर्दिष्ट करता है। गंतव्य एक ड्राइव पत्र और बृहदान्त्र से मिलकर कर सकते हैं, a निर्देशिका का नाम, या एक संयोजन। अगर आप हिल रहे हैं केवल एक फ़ाइल, यदि आप फ़ाइल नाम भी शामिल कर सकते हैं जब आप इसे स्थानांतरित करते हैं तो आप फ़ाइल का नाम बदलना चाहते हैं। [ड्राइव:] [पथ] dirname1 उस निर्देशिका को निर्दिष्ट करता है जिसका आप नाम बदलना चाहते हैं। dirname2 निर्देशिका का नया नाम निर्दिष्ट करता है। / Y आप की पुष्टि करने के लिए संकेत देना चाहता है मौजूदा गंतव्य फ़ाइल को अधिलेखित करें। / -आप को अधिलेखित करने की पुष्टि करने के लिए संकेत देने का कारण बनता है एक मौजूदा गंतव्य फ़ाइल। COPYCMD वातावरण चर में स्विच / Y मौजूद हो सकता है। इसे कमांड लाइन पर / -Y के साथ ओवरराइड किया जा सकता है। डिफ़ॉल्ट है ओवरराइट पर शीघ्र करने के लिए जब तक कि आदेश से निष्पादित नहीं किया जा रहा है एक बैच स्क्रिप्ट के भीतर।
अंतर्निहित XCOPY कमांड करीब है। यह एक पुनरावर्ती कॉपी करेगा, लेकिन मुझे नहीं लगता कि यह नाम बदलने का समर्थन करता है।
for /r %%x in (%1) do ren "%%x" %2
यह पुनरावर्ती फ़ाइल का नाम बदल देगा :-)
फ़ाइल में सेव करने से एक्सटेंशन और एक्सटेंशन से 2 तर्क दिए जाते हैं।
ex: फ़ाइल का नाम test.bat कमांड: test * .avi * .bmp है
यह एक्सटेंशन एवीआई के साथ सभी फाइलों को bmp (सभी सबफोल्डर्स में :) नाम देता है)
नोट: यह रोब कम के द्वारा 13:20 पर 26 अक्टूबर को पोस्ट किए गए उत्तर के लिए सुधार है। उसने के लिए दिया
/r %x in (*.c) do ren "%x" *.cpp
जहां यह है shud के रूप में %% के बजाय %
इसने मेरे लिए बेहतर काम किया:
FOR /R "C:\folder1\folder2\" %i in (.,*) DO MOVE /Y "%i" "C:\folder1\"
स्रोत: http://www.islamadel.com/index.php/notes/6-computer/10-windows-command-line
अधिकांश UNIX कमांड के लिए विंडोज पोर्ट हैं:
मैंने एक VB स्क्रिप्ट बनाई है जो निर्देशिका नामों पर एक खोज और प्रतिस्थापित करेगी ... मेरे पास एक फ़ाइल संस्करण भी है, हालांकि, मुझे लगता है कि यह आपको अपनी स्क्रिप्ट के साथ शुरू करने के लिए पर्याप्त है। जिस तरह से मैं इस स्क्रिप्ट का उपयोग करता हूं वह मेरे पास है fileandreplacedirs.vbs
, और इसे उसी फ़ोल्डर में डाल दिया जाए जिस फ़ोल्डर का मैं नाम बदलना चाहता हूं। इसके अलावा, यह आवश्यक रूप से फ़ोल्डर में पुनरावृत्ति नहीं करता है, लेकिन थोड़ा संशोधन के साथ कर सकता है
search1 = InputBox("Search for...", "", "")
replace1 = InputBox("replace with...", "", "")
Dim MyFile
MyFiles = GetFileArray(".")
For Each MyFile In MyFiles
NewFilename = Replace(MyFile.Name, search1, replace1)
If InStr( MyFile.Name, search1 ) Then MyFile.Name = NewFilename
Next
MsgBox "Done..."
function GetFileArray(ByVal vPath)
'Get our objects...
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.Getfolder(vPath)
Set Files = Folder.SubFolders
'Resize the local array
'Arrays are 0 based but Files collection is 1 based.
if Files.count = 0 then
GetFileArray = array()
Exit Function
Else
Index = 0
Redim FileList(Files.Count-1)
For Each File In Files
set FileList(Index) = File
Index = Index + 1
Next
GetFileArray = FileList
End If
'Always good practice to explicitly release objects...
Set FSO = Nothing
Set Folder = Nothing
Set Files = Nothing
End function
एक साधारण डॉस कमांड का उपयोग करें।
सीडी निर्देशिका स्रोत के लिए जहाँ आप फ़ाइल एक्सटेंशन का नाम बदलना चाहते हैं।
यह कमांड टाइप करें:
ren *.[CurrentFileExtension] *.[DesiredFileExtension]
मैंने if exist
त्रुटि रिटर्न से बचने के लिए जोड़ा (यह जेनकिन्स में मायने रखता है इसलिए यह एक बिल्ड को नहीं तोड़ता है) जब फ़ाइल हर फ़ोल्डर में मौजूद नहीं होती है:
for /r %x in (foo) do if exist "%x" move "%x" "drive:\path\bar"
पुनरावर्ती नाम बदलने के लिए:
for /r %x in (*.c) do if exist "%x" ren "%x" *.cpp
उदाहरण बैच:
for /r "< DIR >" %%x in (*.c) do if exist "%%x" ren "%%x" *.cpp
पॉवरशेल आपका दोस्त है। कोई बैच फ़ाइलों या स्क्रिप्ट की जरूरत नहीं है। उदाहरण के लिए, सभी .tiff फ़ाइलों को .tif से दूरस्थ निर्देशिका में पुन: नाम बदलने के लिए, आप Powershell से निम्न कमांड चला सकते हैं:
get-childitem "\\\servername\d$\path" -recurse -Include *.tiff | Rename-Item -NewName {
$_.Name.replace(".tiff",".tif") }
मुझे यह अजगर लिपि मिली, जो काम करती है:
for root, dirs, files in os.walk(cur_dir):
for filename in files:
file_ext = os.path.splitext(filename)[1]
if old_ext == file_ext:
oldname = os.path.join(root, filename)
newname = oldname.replace(old_ext, new_ext)
os.rename(oldname, newname)
यहां पाया गया: http://gomputor.wordpress.com/2008/09/29/change-the-extension-of-multiple-files-in-a-chosen-directory-with-python/
मैंने अपने पथ में पायथन को जोड़ा और ऊपर 'स्क्रिप्ट' फ़ोल्डर में पायथन लिपि को रखा। मैंने इसे चलाने के लिए यह सरल बैच स्क्रिप्ट बनाई: rn.bat:
python \utils\rn.py %1 %2 %3
मैंने कमांड लाइन से इसके आर्ग्स लेने के लिए ऊपर दी गई पाइथन स्क्रिप्ट को भी अपडेट किया। rn.py:
import sys
import os
cur_dir = sys.argv[1]
old_ext = sys.argv[2]
new_ext = sys.argv[3]
#print cur_dir, old_ext, new_ext
for root, dirs, files in os.walk(cur_dir):
for filename in files:
file_ext = os.path.splitext(filename)[1]
if old_ext == file_ext:
oldname = os.path.join(root, filename)
newname = oldname.replace(old_ext, new_ext)
os.rename(oldname, newname)
अंत में सभी को अब ऐसा करने की आवश्यकता है:
>rn . .foo .bar
या
>rn \ .exe .txt
दूसरे के साथ मज़े करो :)