Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление символов в файлах

Ответить
Настройки темы
CMD/BAT - Удаление символов в файлах

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день.
Необходимо удалить 33 символа в папке в файлах, которые не старее 1 дня.
Подскажите, пожалуйста, батник

Отправлено: 11:41, 26-04-2021

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


*скептически* просто 33 рандомных символа?
нужны подробности о файле (а лучше пример файла), о расположении в нем удаляемых символов, о расположении файлов относительно папок в которых они находятся и аргументация о невозможности использования powershell.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:25, 26-04-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


baddaboo, в содержимом файлов или в имени? Если в содержимом, то какая кодировка файла? Лучше предоставьте живой пример - прикрепите один файл к сообщению, заархивируйте, если большой.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:55, 26-04-2021 | #3


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата Elven:
о расположении файлов относительно папок »
это на самом деле очень важно, т.к. удаляя из файлов: "Name33символа", "Name33символа", ...
как выше, 33 символа, мы рискуем получить одинаковые имена и тут или невозможность выполнения операции или затирание файла.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:46, 26-04-2021 | #4


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Извиняюсь, упустил этот момент в вопросе. В названии файла.
Структура названия:
Имябазы33символа.bak
Нужно, чтобы осталось Имябазы.bak
Градация по времени делается для того, что в этой папке есть другие старые бекапы и чтобы их имя не затерлось. Новые бекапы будут забираться каждый день и удаляться, поэтому задваивание исключено.

Отправлено: 16:09, 26-04-2021 | #5


Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Цитата baddaboo:
которые не старее 1 дня. »
Можно ли это понимать как за сегодняшнюю дату?
Имябазы33символа.bak Что такое Имябазы, сколько там символов?
Нельзя ли переместить файл после переименования в другую папку, чтобы при повторном запуске батника на отрезать 33 символа от уже урезанного имени?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 16:31, 26-04-2021 | #6


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


С датой работать в cmd чистый гемор, и, т.к. аргументов против поша я не увидел - вот:
Код: Выделить весь код
Get-ChildItem ./*.bak | where {$_.LastWriteTime -gt (Get-Date).AddDays(-1)} | foreach {
  $NewName = ($_.BaseName -replace ".{33}$") + $_.Extension
  if (!(Test-Path $NewName -PathType Leaf)) {
    Rename-Item $_ $NewName
  } else {
    Write-Host "Ты же говорил что имена повторяться не будут! А это что такое?"
    Write-Host $NewName
    Write-Host "Вот сам теперь переименовывай :/"
  }
}

Отправлено: 14:15, 27-04-2021 | #7


Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Цитата baddaboo:
в файлах, которые не старее 1 дня »
Если имеется ввиду сегодняшняя дата, то
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "BoxOut=Z:\Box_In\-33"
	Set Mask="*.*" 

	If Not Exist "%BoxOut%" Md "%BoxOut% 
	Pushd "%BoxIn%" && (FOR /F "usebackq delims=" %%f IN (`2^>nul Dir %Mask% /B /A:-D`) DO (
		Set "Name=%%~nf"
		FOR /F "delims= " %%t IN ("%%~tf") DO (
			If %Date%==%%t >nul Call Move "%%f" "%BoxOut%\%%Name:~0,-33%%%%~xf"
		))
	Popd)
pause
Exit /B
BoxIn и BoxOut могут совпадать.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 16:17, 27-04-2021 | #8


Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Цитата baddaboo:
в файлах, которые не старее 1 дня. »
Если за сегодня и вчера, то
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "BoxOut=Z:\Box_In\-33"
	Set /A dayFile=-2
	Set Mask="*.*" 

	If Not Exist "%BoxOut%" Md "%BoxOut%" 
	
	Pushd "%BoxIn%" && (FOR /F "usebackq delims=" %%f IN (`2^>nul Dir %Mask% /B /O:-D /T:W /A:-D`) DO (
		2>nul >nul FORFILES /P "Z:\Box_In" /M "%%f" /D %dayFile% &&GoTo :End
		Set "Name=%%~nf"
		Call Move "%%f" "%BoxOut%\%%Name:~0,-33%%%%~xf"
		)
	Popd)
:End
pause
Exit /B
Можно изменить давность дат файла, изменяя параметр dayFile

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:08, 28-04-2021 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление символов в файлах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Удаление всех пробельных символов в текстовых файлах. serg515 Скриптовые языки администрирования Windows 24 24-10-2020 16:02
CMD/BAT - Удалить строку с ключевым набором символов во всех файлах в папке и всех подпапках. BerryMOR Скриптовые языки администрирования Windows 6 20-06-2019 18:26
CMD/BAT - [решено] Удаление символов переменной NuclearBox Скриптовые языки администрирования Windows 4 20-05-2019 10:25
PowerShell - [решено] Подсчет символов разных языков в мультиязычных файлах nkaretnikov Скриптовые языки администрирования Windows 13 05-03-2017 17:39
Любой язык - удаление всех символов кроме шаблона gendalf Скриптовые языки администрирования Windows 3 19-07-2012 16:21




 
Переход