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

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

Ответить
Настройки темы
Любой язык - [решено] Удалить первый байт в файле

Аватара для m0nkrus

Старожил


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

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


Приветствую!

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

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

 

Ветеран


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

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


Как-то так (pwsh.exe)
Код: Выделить весь код
foreach ($file in (Get-Childitem -File -Recurse))
{
    (Get-Content $file -AsByteStream -Raw)[1..($file.length-1)] | Set-Content $file -AsByteStream
}

Последний раз редактировалось Foreigner, 30-04-2021 в 22:07.

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

Отправлено: 21:43, 30-04-2021 | #2



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

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


Аватара для m0nkrus

Старожил


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

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


Foreigner, я совсем не рублю в PowerShell. Попробовал создать скрипт *.ps1, куда записал эти строки. Поместил скрипт в папку с файлами и запустил. Скрипт выдал ошибку и закрылся.
Что я сделал не так?

Последний раз редактировалось m0nkrus, 01-05-2021 в 09:14.


Отправлено: 22:38, 30-04-2021 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Цитата m0nkrus:
ошибку »
Какую?

Вставьте в начало скрипта

Код: Выделить весь код
cd "путь к нужной папке"
и скрипт в папку не помещайте, он же у себя тоже будет пытаться байт откусить.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 22:45, 30-04-2021 | #4


Ветеран


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

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


Цитата m0nkrus:
Любой язык »
Цитата m0nkrus:
Что я сдела не так? »
Тогда попробуйте в таком виде (для powershell.exe)
Код: Выделить весь код
foreach ($file in (Get-Childitem -File -Recurse))
{
    (Get-Content $file -Encoding byte -Raw)[1..($file.length-1)] | Set-Content $file -Encoding byte
}
Это два взаимоисключающих варианта, первый только для pwsh, второй только для powershell.
У меня не было возможности проверить этот.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:01, 01-05-2021 | #5


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Foreigner:
первый только для pwsh, второй только для powershell. »
можно так:
Код: Выделить весь код
$root = 'd:\test'
dir $root -file -rec|%{
    $bytes = [io.file]::readallbytes($_.fullname)
    [io.file]::writeallbytes($_.fullname, $bytes[1..($bytes.count-1)])
}

-------
scio me nihil scire. Ѫ

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

Отправлено: 01:00, 01-05-2021 | #6


Аватара для m0nkrus

Старожил


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

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


Наверное надо было уточнить... Пробую все это делать на семерке. Если нужно обязательно на десятке, то скажите, переключусь на нее.
Все скрипты вываливаются с ошибкой. С какой, сказать не могу, так как консольное окно сразу закрывается. Только и успеваю увидеть красный цвет надписи. С файлами в папке ничего не происходит. Еще раз прошу прощения за свою дурость, но с PowerShell я ранее дел не имел.

Отправлено: 06:17, 01-05-2021 | #7


Ветеран


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

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


Коллеги, судя по:
Цитата m0nkrus:
…с PowerShell я ранее дел не имел. »
— вероятно, надо разрешить исполнение неподписанных локальных скриптов.

Отправлено: 07:33, 01-05-2021 | #8


Аватара для m0nkrus

Старожил


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

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


Iska, насколько я помню, в свое время я давал разрешение командой Set-ExecutionPolicy Unrestricted. Сейчас на всякий случай повторил. Результат не изменился...

Отправлено: 08:29, 01-05-2021 | #9


Аватара для m0nkrus

Старожил


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

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


Перешел на десятку. Скрипт ниже сработал, но не до конца. Не смог обработать файлы во вложенных папках. Выдал ошибку. В корневой для скрипта директории все обработал.
Код: Выделить весь код
cd d:\test
foreach ($file in (Get-Childitem -File -Recurse))
{
    (Get-Content $file -Encoding byte -Raw)[1..($file.length-1)] | Set-Content $file -Encoding byte
}

А вот скрипт, что представлен ниже, выдал тот результат, что мне нужно!
Код: Выделить весь код
$root = 'd:\test'
dir $root -file -rec|%{
    $bytes = [io.file]::readallbytes($_.fullname)
    [io.file]::writeallbytes($_.fullname, $bytes[1..($bytes.count-1)])
}
Благодарю всех за предложенные варианты!!!
Тему считаю исчерпанной.

Отправлено: 08:44, 01-05-2021 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Удалить все метаданные в файле shadowbat Скриптовые языки администрирования Windows 0 03-03-2020 15:49
CMD/BAT - [решено] Удалить первый символ из строки Darkar25 Скриптовые языки администрирования Windows 4 06-04-2019 11:59
CMD/BAT - [решено] удалить файл от 0 до 100 байт Freddy1984 Скриптовые языки администрирования Windows 15 14-06-2017 16:05
Любой язык - [решено] Удалить последний байт в файле pzh2393 Скриптовые языки администрирования Windows 10 06-12-2014 19:28
[решено] Изменить байт в файле по смещению. semiono AutoIt 2 29-08-2010 22:57




 
Переход