|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] убрать точку в цикле из расширения файла |
|
|
CMD/BAT - [решено] убрать точку в цикле из расширения файла
|
Старожил Сообщения: 267 |
Профиль | Отправить PM | Цитировать
есть код
нужно, чтобы вместо "name.txt" выводились "name-txt" или "name txt" этот код работает только с setlocal EnableDelayedExpansion for %%i in ("%CD%\*.txt") do ( echo %%~xi set "qqn=%%~ni" set "qqx=%%~xi" setlocal EnableDelayedExpansion echo !qqn!!qqx! echo !qqx:.=-! echo !qqx:~1,3! set qq1=!qqx:.=-! set qq2=!qqx:~1,3! echo !qq1! echo !qq2! set qq3=!qqn!!qq1! set qq4=!qqn! !qq2! echo !qq3! echo !qq4! set qq5=!qqn!!qqx:.=-! set qq6=!qqn! !qqx:~1,3! echo !qq5! echo !qq6! endlocal ) pause |
|
Отправлено: 21:59, 22-09-2019 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 23:13, 22-09-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Забанен Сообщения: 793
|
|
Отправлено: 23:29, 22-09-2019 | #3 |
Ветеран Сообщения: 2709
|
Профиль | Отправить PM | Цитировать shadowbat, Без восклицаний:
@Echo Off For %%i in ("%CD%\*.txt") Do ( Set "Ext=%%~xi" Call Echo "%%~ni-%%Ext:~1%%" ) Exit /B Более универсальный путь @Echo Off For %%i in ("%CD%\*.txt") Do Set "Ext=%%~xi" &Call :NewName "%%i" "%%~ni" "%%Ext:~1%%" Exit /B :NewName Set "NN=%~2-%~3" Echo %NN% Exit /B 0 |
------- Последний раз редактировалось megaloman, 24-09-2019 в 14:25. Отправлено: 14:52, 23-09-2019 | #4 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать Цитата alpap:
имеется ввиду так? Цитата greg zakharov:
переменные !n! !x:.=! как раз и работают только в случае с EnableDelayedExpansion, нет? аналогичный этому код как раз и показан в первом посте окно выдаёт: Скрытый текст
D:\111>for %i in ("D:\111\*.txt") do (cmd /v/c "for %i in ("D:\111\*.txt") do @(set "n=%~ni" & set "x=%~xi" & echo:!n! !x:.=!)" ) D:\111>(cmd /v/c "for D:\111\log 2.txt in ("D:\111\*.txt") do @(set "n=log 2" & set "x=.txt" & echo:!n! !x:.=!)" ) Непредвиденное появление: D:\111\log. D:\111>(cmd /v/c "for D:\111\log.txt in ("D:\111\*.txt") do @(set "n=log" & set "x=.txt" & echo:!n! !x:.=!)" ) Непредвиденное появление: D:\111\log.txt. D:\111>pause Для продолжения нажмите любую клавишу . . . Цитата megaloman:
@Echo Off For %%i in ("%CD%\*.txt") Do ( Set "Ext=%%~xi" Call Echo "%%~ni-%%Ext:~1%%" Set Ext2="%%~ni_%%Ext:~1%%" Call Echo %Ext2% ) pause Exit /B Цитата:
Цитата:
|
||||||
Последний раз редактировалось shadowbat, 24-09-2019 в 13:11. Отправлено: 13:03, 24-09-2019 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
Цитата shadowbat:
Цитата cmd.exe /?:
Цитата shadowbat:
|
||||
Отправлено: 13:18, 24-09-2019 | #6 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
На данном этапе код уже гораздо обширнее: |
|
Отправлено: 13:48, 24-09-2019 | #7 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать Цитата Iska:
да банально скопировать файл file.txt в file-txt\file.txt чтобы лишний раз не дублировать точку в имени папки. вот что получилось: cmd /v/c "for %%i in ("%cd%\*.txt") do @( echo %%i & set "n=%%~ni" & set "x=%%~xi" & set "new=!n!!x:.=-!" & md "%%~dpi\!new!\" & copy "%%i" "%%~dpi\!new!\%%~nxi")" pause Цитата:
|
||
Последний раз редактировалось shadowbat, 24-09-2019 в 14:13. Отправлено: 13:52, 24-09-2019 | #8 |
Ветеран Сообщения: 2709
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
@Echo Off For %%i in ("%CD%\*.txt") Do ( Set "Ext=%%~xi" >nul Call Xcopy /D /Y "%%i" "%%~dpi%%~ni-%%Ext:~1%%\" ) Exit /B @Echo Off For %%i in ("%CD%\*.txt") Do Set "Ext=%%~xi" &Call :NewName "%%i" "%%~ni" "%%Ext:~1%%" Exit /B :NewName >nul Xcopy /D /Y %1 "%~dp1%~2-%~3\" Exit /B 0 Цитата Iska:
|
||
------- Последний раз редактировалось megaloman, 24-09-2019 в 14:22. Отправлено: 13:58, 24-09-2019 | #9 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать Цитата alpap:
т.е. дублирует одну папку Цитата alpap:
прошу прощения, если доставил неудобства этим а по поводу копирования в новую папку, это не новое название темы и не новое ТЗ, это я уже сам внедрю себе, тут именно задача была в этих отложенных переменных и костыле EnableDelayedExpansion Цитата megaloman:
да это и не надо было по ТЗ, согласен, надо было сразу создавать тему именно с копированием в папку file-txt |
|||
Последний раз редактировалось shadowbat, 24-09-2019 в 14:39. Отправлено: 14:11, 24-09-2019 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Как убрать ASCII-символ из файла? | glukin | Скриптовые языки администрирования Windows | 8 | 24-03-2017 10:23 | |
CMD/BAT - Убрать пробелы из файла | magistor.88 | Скриптовые языки администрирования Windows | 2 | 16-03-2015 17:30 | |
CMD/BAT - [решено] Как из имени файла убрать 11 символов | cdp75 | Скриптовые языки администрирования Windows | 3 | 26-04-2012 06:07 | |
CMD/BAT - Обработать два текстовых файла в одном цикле: как? | grinsen | Скриптовые языки администрирования Windows | 1 | 27-02-2010 03:33 | |
Мультимедиа - Как убрать лицензию из WMV-файла? | Guest | Программное обеспечение Windows | 34 | 26-07-2008 18:47 |
|