CMD/BAT - [решено] Удалить в имени файла скобки

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

CMD/BAT - [решено] Удалить в имени файла скобки

Сообщение vcrank »

Доброго времени.

Помогите пожалуйста с такой задачей:

В папке есть множество файлов вида


Цитата:



filename.java

filename (1).java

filename (2).java

othername (3).txt



В качестве параметра для bat-файла указываю полный путь к нужному мне файлу (просто перетягиваю файл на батник)

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


Цитата:



filename.java -> filename.java

filename (1).java -> filename.java

filename (2).java -> filename.java

othername (3).txt -> othername.txt



P.S.: сейчас ещё раз посмотрел список файлов. Изредка встречается, что перед скобкой 2 пробела. Они оба не нужны
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Удалить в имени файла скобки

Сообщение megaloman »

Попробуйте решить задачу с помощью использования метода replace на powershell, может оказаться гораздо проще, чем командный сценарий устаревшего командного интерпретатора.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Удалить в имени файла скобки

Сообщение megaloman »

Цитата vcrank:



В папке есть множество файлов вида
CMD/BAT - [решено] Удалить в имени файла скобки




Если скобки - это последнее, что есть перед расширением, то:

Код:

Код: Выделить всё

@Echo Off
Cls
	If "%~1"=="" (Echo ??? file names must be specified in the script arguments! &Pause &Exit /B 2)
	For %%f In (%*) Do Call :MyRen "%%~f" "%%~nf" "%%~xf"
Pause
Exit /B 0
:MyRen
	Set "Name=%~2"
	Set "Name=%Name: (=(%"
	Set "Name=%Name: (=(%"
	Set "Name=%Name: (=(%"
	For /F "delims=(" %%s In ("%Name%") Do Set "Name=%~dp1%%s%~3"
	>nul Move /Y %1 "%Name%" 
Exit /B


Цитата vcrank:



(просто перетягиваю файл на батник)
CMD/BAT - [решено] Удалить в имени файла скобки




Можете выбрать несколько файлов за раз. Максимум не знаю.
Ответить

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