Компьютерный форум 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=354291)

vcrank 28-09-2023 07:38 3017043

Удалить в имени файла скобки
 
Доброго времени.
Помогите пожалуйста с такой задачей:
В папке есть множество файлов вида
Цитата:

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 пробела. Они оба не нужны

NickM 28-09-2023 07:49 3017044

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

megaloman 28-09-2023 14:20 3017087

Цитата:

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

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

@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
(просто перетягиваю файл на батник) »

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

vcrank 29-09-2023 09:05 3017157

megaloman, спасибо. Отлично работает


Время: 11:37.

Время: 11:37.
© OSzone.net 2001-