Пакетная молния - нужно удалить старые файлы - PullRequest
1 голос
/ 14 января 2011

У меня есть пакетный скрипт, который на самом деле делает то, что я хочу (берет несколько файлов и помещает их в тот же каталог, откуда они пришли как файлы .bz2) Мне нужна помощь, потому что мне нужно удалить исходные файлы. Кроме того, когда размер ввода становится слишком большим (не может дать точное число, вероятно, где-то около 40 или около того), пакет завершается сбоем. Я пытался решить это сам, к сожалению, партия для меня - бред. Если бы это могло удалить исходный файл, я мог бы иметь дело с текущим размером ввода. Буду очень признателен за любую помощь Вот мой текущий код:

@Echo Off
:Start
If [%1==[ Goto :EOF
PushD %~pd1
"C:\Program Files\7-Zip\7z.exe" u -tbzip2 %~nx1.bz2 %1
Shift
PopD
Goto Start

Я также хотел бы отметить, что я не являюсь первоначальным автором этого кода, он был размещен на форуме.

Ответы [ 2 ]

1 голос
/ 19 января 2011

Я бы вместо этого сделал цикл FOR.

::start batchfile
@echo off
setlocal
::set local variables

set input=C:\input
set 7zip=C:\Program Files\7-Zip

::The reason I would use this forloop is that when you start your loop,
::you can say for each files in a recursive way do the following: 
::IF (test) do (<command1> <command2>)
::The file that is being processed is called %%i during the whole loop (for that file)
::so at the end of your loop you just 'del <file>' your source

for /f %%i in (%input%\*.bz2) do (
%7zip% u -tbzip2 "%input%\%%i" "%%i"
del "%input%\%%i"
)

goto: eof

Я не очень опытный, но я надеюсь, что это поможет вам на вашем пути

0 голосов
/ 08 февраля 2011

Измените строку, где утилита распаковки называется так:

"C:\Program Files\7-Zip\7z.exe" u -tbzip2 %~nx1.bz2 %1 <b>&& del %~nx1.bz2</b>

Часть, выделенная жирным шрифтом, означает «удалить файл, указанный, если команда слева от && выполнена успешно». Таким образом, если по какой-либо причине файл не был разархивирован или был не полностью разархивирован, del не сработает и файл сохранится. То есть, если вы хотите, чтобы это было так.

И если решение Rps вам подходит, вы можете изменить его соответствующим образом.

Но перед использованием del я сначала попытался бы выяснить (запустив, вероятно, 7z.exe /? или 7z.exe -?), есть ли в утилите unzipper параметр, позволяющий ей автоматически удалять архив при распаковке. Таким образом, вам не придется реализовывать эту функцию вручную.

...