Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Переименовать папки, удалив всё после определённого символа (http://forum.oszone.net/showthread.php?t=335534)

dreamscafe 29-06-2018 16:22 2820028

Переименовать папки, удалив всё после определённого символа
 
Здравствуйте. Есть следующая задачка:
В одной папке лежит куча файлов с именами по типу "12345_44_22.txt"
Эти файлы я раскидываю по папкам батником
Цитата:

For %%a in (*.txt) do md "%%~na"& move "%%~a" "%%~na"
Теперь мне необходимо созданные папки, которые имеют вид по типу "12345_44_22", привести к виду просто "12345".
Т.е. удалить всё, что после первого символа "_".
Подскажите что дописать в батнике?

megaloman 29-06-2018 20:33 2820044

Цитата:

Цитата dreamscafe
Теперь мне необходимо созданные папки, которые имеют вид по типу "12345_44_22", привести к виду просто "12345". »

Сначала бездумно залезли в дебри, а теперь не знаем дороги. :)
Если Вам надо, чтобы все файлы вида 12345_??_??.txt попали в папку вида 12345 (как я понимаю, батник у Вас среди этих файлов/папок), то вот решение
Код:

@Echo Off
Set "Mask=?????_??_??.txt"
Set "Delim=_"

FOR /F "usebackq tokens=1* delims=%Delim%" %%a IN (`2^>nul Dir /B /A:-D "%Mask%"`) DO (
        If Not Exist "%%a\" Md "%%a"
        Move /Y "%%a%Delim%%%b" "%%a\" >nul
)
GoTo :Eof

Еще вариант, побыстрее
Код:

@Echo Off
Set "Mask=?????_??_??.txt"
Set "Delim=_"

FOR /F "usebackq tokens=1* delims=%Delim%" %%a IN (`2^>nul Dir /B /A:-D "%Mask%"`) DO (
        If Not Exist "%%a\" Md "%%a"
        If Exist "%%a%Delim%%%b" Move /Y "%%a%Delim%*%%~xb" "%%a\" >nul
)
GoTo :Eof



Время: 23:08.

Время: 23:08.
© OSzone.net 2001-