Используйте 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
Я просто выполняю небольшой пример в своем поле Windows XP SP2 с командой перемещения, и это работало. Все файлы и каталоги были перемещены от источника до dest. источника, и dest являются именами каталогов.
move source dest
ver Microsoft Windows XP [Version 5.1.2600]
move /? Moves files and renames files and directories. To move one or more files: MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination To rename a directory: MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2 [drive:][path]filename1 Specifies the location and name of the file or files you want to move. destination Specifies the new location of the file. Destination can consist of a drive letter and colon, a directory name, or a combination. If you are moving only one file, you can also include a filename if you want to rename the file when you move it. [drive:][path]dirname1 Specifies the directory you want to rename. dirname2 Specifies the new name of the directory. /Y Suppresses prompting to confirm you want to overwrite an existing destination file. /-Y Causes prompting to confirm you want to overwrite an existing destination file. The switch /Y may be present in the COPYCMD environment variable. This may be overridden with /-Y on the command line. Default is to prompt on overwrites unless MOVE command is being executed from within a batch script.
Встроенная команда XCOPY близка. Это сделает рекурсивную копию, но я не думаю, что это поддерживает, переименовывают.
for /r %%x in (%1) do ren "%%x" %2
это переименует файл рекурсивно :-)
сохраните в файле, дают 2 аргумента от расширения и к расширению.
исключая: имя файла является командой test.bat: протестируйте *.avi *.bmp
это переименовывает все файлы с расширением avi к bmp (во всех подпапках :))
Примечание: Это - исправление для сообщения, которому отвечает 26 октября в 13:20 Rob Kam. Он дал для
/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
Я создал Сценарий VB, который сделает поиск и замену на именах каталогов... У меня есть версия файлов также, однако, я думаю, что этого достаточно для запущения Вас с Вашего собственного сценария. Путем я использую этот сценарий, у меня есть a 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
Я нашел этот сценарий Python, который работает также:
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/
Я добавил Python к своему пути и поместил сценарий Python выше в 'utils' папку. Я затем создал этот простой сценарий пакетной обработки для выполнения его: rn.bat:
python \utils\rn.py %1 %2 %3
Я также обновил сценарий Python выше для взятия его args из командной строки. 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
Весело проведите время со вторым :)