PDA

Показать полную графическую версию : Переименование первых подпапок в каждой папке


ruslaw
24-10-2013, 02:17
Можно ли создать батник который входил в некую Главную папку, имеющую множество подпапок с разными уровнями вложения и со всеми этими подпапками (всех уровней вложения) проделывал бы следующее - брал бы первую из них (как они расположены в папке) и добавлял в имя какой-то знак (например - @) спереди.

sunnykey
24-10-2013, 13:17
Цитата ruslaw:
Можно ли создать батник который входил в некую Главную папку, имеющую множество подпапок с разными уровнями вложения и со всеми этими подпапками (всех уровней вложения) проделывал бы следующее - брал бы первую из них (как они расположены в папке) и добавлял в имя какой-то знак (например - @) спереди. Хочу уточнить фразу "как они расположены в папке". А как они у вас расположены? В алфавитном порядке, по возрастанию размера или по-другому отсортированы (это вопрос к проводнику)? На powershell решается просто
function RenameFolder ($folderPath) {
if ($CurPath=gci $folderPath.FullName | ? `
{$_.PsIsContainer -eq $true} | sort | select -First 1) {
RenameFolder ($CurPath)
}
$NewfolderPath=(Split-Path $folderPath.FullName -Parent)+"\@"+`
(Split-Path $folderPath.FullName -Leaf)
Rename-Item $folderPath.FullName -NewName $NewfolderPath -WhatIf
}

RenameFolder (gci "D:\Downloads" | ? {$_.PsIsContainer -eq $true} | `
sort | select -First 1)

Iska
24-10-2013, 14:58
А как они у вас расположены? В алфавитном порядке, по возрастанию размера или по-другому отсортированы (это вопрос к проводнику)? »
Это вопрос к файловой системе. На NTFS — всегда в лексикографическом, на FATx — в порядке поступления в каталог.

Гуллипут
24-10-2013, 23:50
Если без разных уровней вложений, то просто:
cd /d "Главная Папка"

for /F "delims=" %%d in ('dir /A:D *.*') do (
move %%d @%%~nxd
goto e
)
:e


C вложениями - сложнее. Надо подумать.


Вот придумал и отладил:

cd /d "Главная Папка"
call :one_dir
for /D /R %%f in (*.*) do (
pushd %%f
call :one_dir
popd
)
goto :eof
:one_dir
for /F "delims=" %%d in ('dir /B /A:D *.*') do (
move %%d @%%~nxd
goto :eof
)


Единственное, что меня смутило: противоречие темы и текста сообщения. В теме идёт речь о VBS/WSH/JS, а в тексте - о батнике. Это же разные языки !

ruslaw
25-10-2013, 10:36
А как они у вас расположены? - Да, в алфавитном порядке (по имени)




© OSzone.net 2001-2012