2011-06-30 4 views
0

В каталоге есть 100 папок и внутри каждой папки находится файл (filename).ini.Присоединение имени папки ко всем файлам в этой конкретной папке

Все, что мне нужно сделать, это прикрепить имя родительской папки к файлу .ini, чтобы он стал (foldername)-(filename).txt.

Есть ли пакетный скрипт, который может это сделать? Я новичок в пакетных файлах. Итак, любая помощь очень ценится!

+0

Для какой операционной системы вам это нужно? –

+0

Если вы используете Windows, вы можете начать с записи [this] (http://superuser.com/questions/205083/command-line-recursive-rename-move-in-windows), для linux см. [Этот другой] (http://ubuntuforums.org/showthread.php?t=679657). – ascanio

ответ

1
setlocal enabledelayedexpansion 

for /R %%a in (*.ini) do (
    set relativepath=%%a 
    set relativepath=!relativepath:%cd%\=! 
    set newname=!relativepath:\=-! 
    set newname=!newname:.ini=.txt! 
    ren !relativepath! !newname! 
) 

endlocal 
+0

+1, но это не удается, если вы начинаете с корневого каталога, так как 'CD' разрешает' C: \ 'с добавленной косой чертой – jeb

0

Это работает для любой папки и любой структуры папок.

@echo off 
setlocal enabledelayedexpansion 
for /R %%a in (*.ini) do (
    set foldername=%%~pa 
    set foldername=!foldername:\=_! 
    echo ren "%%~fa" "(!foldername!)-%%~na.txt" 
) 

Для всех ини файлов в текущем каталоге: извлечь путь из файла, используя модификатор ~p; изменить все обратные косые черты на символы подчеркивания, используя модификатор :=; наконец, переименуйте оригинальный INI-файл.

После тестирования, удалите ECHO

См HELP FOR и HELP SET для получения дополнительной информации.

Смежные вопросы