Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Названия папок ПРОПИСНЫМИ буквами

Ответить
Настройки темы
CMD/BAT - [решено] Названия папок ПРОПИСНЫМИ буквами

Аватара для Sisin

Старожил


Сообщения: 345
Благодарности: 9

Профиль | Отправить PM | Цитировать


Помогите, пожалуйста, с батником, который менял бы название всех папок рядом с собой (не включая вложенные) на то же название только написанное прописными буквами.

Отправлено: 23:23, 13-07-2022

 

Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Как вариант, VBS-скрипт.
Код: Выделить весь код
Option Explicit

Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim FolderIn
With WScript.Arguments
    If .Count > 0 Then
        Dim BoxIn: BoxIn = .Item(0)
        If Not FSO.FolderExists(BoxIn) Then
            MsgBox "Папка" + vbLf + BoxIn + vbLf + "не найдена", 16
            WScript.Quit
        End If
    Else
        MsgBox "Скрипту не указан путь обрабатываемой папки", 16
        WScript.Quit
    End If
End With

For Each FolderIn In FSO.GetFolder(BoxIn).SubFolders
    FolderIn.Move UCase(FolderIn.Path)
Next
Создайте где-нибудь файл с расширением vbs, создайте на рабочем столе на него иконку и в проводнике затягивайте на нее обрабатываемую папку. В ней подпапки будут переименованы, не включая вложенные.
Если скрипт будет переименовывать папки рядом с собой (не включая вложенные), то он упрощается
Код: Выделить весь код
BoxIn = Replace(WScript.ScriptFullName, "\" + WScript.ScriptName,"")
For Each FolderIn In CreateObject("Scripting.FileSystemObject").GetFolder(BoxIn).SubFolders
    FolderIn.Move UCase(FolderIn.Path)
Next
Можно, конечно, извратиться в CMD, но это тихий ужас по быстродействию и надежности
Код: Выделить весь код
@Echo Off
cls
	Set "U=АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ"
	Set "L=абвгдеёжзийклмнопрстуфхцчшщьыъэюяabcdefghijklmnopqrstuvwxyz"

	For /L %%i In (0,1,58) Do Call Set "@@%%i=%%L:~%%i,1%%=%%U:~%%i,1%%"
	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir /B /A:D`) DO (
		Set "Name=%%d"
		For /L %%i In (0,1,58) Do Call :MyRen "%%@@%%i%%"
		Call Ren "%%d" "%%Name%%" 
	)
Pause
Exit /B

:MyRen
	Call Set "Name=%%Name:%~1%%"
Exit /B
Сохранить в 866 кодировке, разместить в папке, где переименовываются подпапки

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-07-2022 в 18:37.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:40, 15-07-2022 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Sisin

Старожил


Сообщения: 345
Благодарности: 9

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Обновить нельзя что - систему или Powershell?
Если что, то Powershell можно обновить и на семёрке. »
Ничего нельзя обновить. В этом и проблема.

Отправлено: 20:57, 15-07-2022 | #12


Забанен


Сообщения: 346
Благодарности: 62

Профиль | Цитировать


TotalCMD: курсор на любой папке - Alt_+_+(выделится тип файлов) - Ctrl+M - выбрать в выпадающем списке ВСЕ ЗАГЛАВНЫЕ - Enter
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:55, 15-07-2022 | #13


Старожил


Сообщения: 250
Благодарности: 51

Профиль | Отправить PM | Цитировать


можно авм помочь ?

Код: Выделить весь код
mkdir привет\test1
dir привет
    Directory: C:\temp\привет
Код: Выделить весь код
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        7/14/2022   9:18 PM                test1
Код: Выделить весь код
get-childitem -path '.' | where-object { $_.PSIsContainer } | 
where-object { $_.name -clike '[а-я]*'} | 
foreach-object { 
move-item -path $_.name -destination ($_.name.ToUpper() + '.tmp' ) ;
move-item -path ($_.name.ToUpper() + '.tmp' ) -destination ($_.name.ToUpper() ) 
}
Код: Выделить весь код
dir ПРИВЕТ
Код: Выделить весь код
    Directory: C:\temp\ПРИВЕТ


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        7/14/2022   9:18 PM                test1
Код: Выделить весь код
$PsVersionTable
Код: Выделить весь код
Name                           Value
----                           -----
CLRVersion                     2.0.50727.8797
BuildVersion                   6.0.6002.18111
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

Последний раз редактировалось Serguei Kouzmine, 16-07-2022 в 01:32.


Отправлено: 01:18, 16-07-2022 | #14



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Названия папок ПРОПИСНЫМИ буквами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] пропали названия дисков, файлов и папок Zita_Zajka Microsoft Windows 10 9 08-06-2017 06:38
2008 R2 - Названия папок в профиле пользователя после перемещения Lipser2008 Windows Server 2008/2008 R2 16 17-04-2017 16:45
Интерфейс - [решено] Изменились названия папок в C:\Users ziken Microsoft Windows 7 1 12-12-2013 16:24
PIC VIDeo MJPEG, или Explorer.exe прописными буквами. LiXiQing Лечение систем от вредоносных программ 7 12-02-2010 17:03
Названия файлов и папок переписываются нечитаемым шрифтом LVS_LVS Лечение систем от вредоносных программ 1 02-08-2008 19:02




 
Переход