VBS/WSH/JS - Переименование первых подпапок в каждой папке

Ответить
Аватара пользователя
ruslaw

VBS/WSH/JS - Переименование первых подпапок в каждой папке

Сообщение ruslaw »

Можно ли создать батник который входил в некую Главную папку, имеющую множество подпапок с разными уровнями вложения и со всеми этими подпапками (всех уровней вложения) проделывал бы следующее - брал бы первую из них (как они расположены в папке) и добавлял в имя какой-то знак (например - @) спереди.
Аватара пользователя
sunnykey

Re: VBS/WSH/JS - Переименование первых подпапок в каждой папке

Сообщение sunnykey »

Цитата:



Цитата 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

Re: VBS/WSH/JS - Переименование первых подпапок в каждой папке

Сообщение Iska »

Цитата sunnykey:



А как они у вас расположены? В алфавитном порядке, по возрастанию размера или по-другому отсортированы (это вопрос к проводнику)?
VBS/WSH/JS - Переименование первых подпапок в каждой папке




Это вопрос к файловой системе. На NTFS — всегда в лексикографическом, на FATx — в порядке поступления в каталог.
Аватара пользователя
Гуллипут

Re: VBS/WSH/JS - Переименование первых подпапок в каждой папке

Сообщение Гуллипут »

Если без разных уровней вложений, то просто:

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

Re: VBS/WSH/JS - Переименование первых подпапок в каждой папке

Сообщение ruslaw »

А как они у вас расположены? - Да, в алфавитном порядке (по имени)
Ответить

Вернуться в «Скриптовые языки администрирования Windows»