PDA

Показать полную графическую версию : [решено] Переименовать папки, удалив всё после определённого символа


dreamscafe
29-06-2018, 16:22
Здравствуйте. Есть следующая задачка:
В одной папке лежит куча файлов с именами по типу "12345_44_22.txt"
Эти файлы я раскидываю по папкам батником
For %%a in (*.txt) do md "%%~na"& move "%%~a" "%%~na"
Теперь мне необходимо созданные папки, которые имеют вид по типу "12345_44_22", привести к виду просто "12345".
Т.е. удалить всё, что после первого символа "_".
Подскажите что дописать в батнике?

megaloman
29-06-2018, 20:33
Теперь мне необходимо созданные папки, которые имеют вид по типу "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




© OSzone.net 2001-2012