2016-10-10 5 views
-2

У меня есть папка, в которой есть несколько сотен подпапок, и каждая из этих подпапок будет иметь в ней ровно один файл. Как переименовать эти файлы и дать им имя их соответствующей родительской папки? Я новичок, поэтому объяснение кодов будет высоко оценен :)Пакетный файл для переименования файлов и указания имени родительской папки

+2

вам нужно сначала попробовать что-то. –

+0

Введите команду 'Help' в командной строке. Для каждой введенной команды введите 'help ' (например, 'help dir') или' /? '(Например,' dir /? '). Это приведет к запуску 'cd c: \ program files & For/f" delims = "% A in ('Dir/b/s" c: \ Program Files \ *. Exe "') Сделайте Echo% ~ dpnxA'. Для справки по специальным символам см. Ответ на странице http://stackoverflow.com/questions/31820569/trouble-with-renaming-folders-and-sub-folders-using-batch –

+1

Возможный дубликат: [Как добавить имя папки в файл имя?] (http://stackoverflow.com/q/16987846/3439404) и [много похожих вопросов] (http://stackoverflow.com/search?q=%5Bbatch-file%5D+add+folder+ имя + до + файл + имя) – JosefZ

ответ

0

Вот то, что может помочь:

@Echo Off 
(Set dRoot=C:\Users\Pankan\MyDirectory) 
If /I "%CD%" NEq "%dRoot%" (PushD "%dRoot%" 2>Nul||Exit/B) 
For /F "Tokens=1*" %%A In ('RoboCopy /L /S /NC /NFL /NJH /NJS "%CD%" null *.*' 
     ) Do If "%%A"=="1" Call :Sub "%%B" 
Exit/B 
:Sub 
Set "pDir=%~1" 
For %%A In ("%pDir:~,-1%") Do Set "nDir=%%~nxA" 
For %%A In ("%~1*") Do If /I "%%~nxA" NEq "%nDir%%%~xA" Ren "%%A" "%nDir%%%~xA" 

Изменение линии два, чтобы удовлетворить имя каталога, содержащего все ваши вложенные папки.

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