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

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

Ответить
Настройки темы
CMD/BAT - [решено] Исправление скрипта для распаковки фалов

Аватара для Tosyk

Старожил


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

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


Допустим есть программа распаковщик, которая имеет работает по такому синтаксису:

tool.exe <file.bin> <folder>

у меня есть скрипт, который ищет вглубь по папкам файлы *.bin и распаковывает их в папки с именем распаковываемого файла, например скрипт нашёл файл file04.bin, создал рядом с этим файлом папку file04 и распаковал в эту папку содержимое файла file04.bin. собственно делается командой "%%~dpnA"

Код: Выделить весь код
For /F "Tokens=*" %%A In ('Dir /B /S *.bin') Do (
	MD "%%~dpnA" 2>nul&&tool.exe "%%A" "%%~dpnA"
	)
а как сделать чтобы скрипт не создавал папку, а распаковывал бы прямо рядом с файлом

Отправлено: 08:12, 11-01-2011

 

Googler


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

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


как-то так:
Код: Выделить весь код
for /f "tokens=*" %%a in ('dir /b/s *.bin') do tool.exe "%%a" "%%~dpa"

Отправлено: 08:18, 11-01-2011 | #2



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

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


Аватара для Tosyk

Старожил


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

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


Почему то не работает, говорит дело в программе.

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

Код: Выделить весь код
For /F "Tokens=*" %%A In ('Dir /B /S *.bin') Do ( MD "%%~dpnA" 2>nul&&tool.exe -o -f  "*.bin" "%%A" "%%~dpnA" )
добавил -o -f "*.bin"

Отправлено: 08:33, 11-01-2011 | #3


Googler


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

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


Tosyk, может так?
Код: Выделить весь код
for /f "tokens=*" %%a in ('dir /b/s *.bin') do tool.exe -o -f "%%a" "%%~dpa"
получить список реально выполняемых команд в файл (file.log) для проверки:
Код: Выделить весь код
(for /f "tokens=*" %%a in ('dir /b/s *.bin') do @echo tool.exe -o -f "%%a" "%%~dpa"
)>file.log

Последний раз редактировалось amel27, 12-01-2011 в 05:40. Причина: очепятка

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

Отправлено: 09:06, 11-01-2011 | #4


Аватара для Tosyk

Старожил


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

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


Цитата amel27:
Tosyk, может так?
Код:
for /f "tokens=*" %%a in ('dir /b/s *.bin') do tool.exe -o -f "%%a" "%%~dpa" »
дело в том, что я пробЫвал так сделать, не вышло

при таком варианте

Код: Выделить весь код
For /F "Tokens=*" %%A In ('Dir /B /S *.bin') Do ( MD "%%~dpnA" 2>nul&&tool.exe -o -f  "*.bin" "%%A" "%%~dpnA" )
говорится следующее

Код: Выделить весь код
d:\test\>_bin_unpack.cmd

d:\test\>For /F "Tokens=*" %A In ('Dir /B /S *.bin') Do (MD "%~dpnA" 2>nul   && tool.exe -o -F "*.bin" n-unpacker.ms "%A" "%~dpnA"  )

d:\test\>(MD "d:\test\A_MOUNT_ROBOT_04"  2>nul  && tool.exe -o -F "*.bin" n-unpacker.ms "d:\test\A_MOUNT_ROBOT_04.bin" "d:\test\A_MOUNT_ROBOT_04"  )

- open input file d:\test\A_MOUNT_ROBOT_04.bin
- open script n-unpacker.ms
- set output folder d:\test\A_MOUNT_ROBOT_04

  offset   filesize   filename
------------------------------
  00000000 34173840   A_MOUNT_ROBOT_04.bin.dec

- 1 files found in 5 seconds
а при таком:

Код: Выделить весь код
for /f "tokens=*" %%a in ('dir /b /s *.bin') do tool.exe -o -f "*.bin" n-unpacker.ms "%%a" "%%~dpa"
говорит это:

Код: Выделить весь код
d:\test\>_bin_unpack.cmd

d:\test\>For /F "Tokens=*" %A In ('Dir /B /S *.bin') Do (MD "%~dpnA" 2>nul   && tool.exe -o -F "*.bin" n-unpacker.ms "%A" "%~dpnA"  )

d:\test\>(MD "d:\test\A_MOUNT_ROBOT_04"  2>nul  && tool.exe -o -F "*.bin" n-unpacker.ms "d:\test\A_MOUNT_ROBOT_04.bin" "d:\test\A_MOUNT_ROBOT_04"  )

- open input file d:\test\A_MOUNT_ROBOT_04.bin
- open script n-unpacker.ms
- set output folder d:\test\A_MOUNT_ROBOT_04

- error in src\tool.c line 1013: main()
Error: Invalid argument

Отправлено: 09:54, 11-01-2011 | #5


Googler


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

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


Tosyk, как-то не стыкуется последний лог с кодом батника - там нет таких команд

Отправлено: 12:01, 11-01-2011 | #6


Аватара для Tosyk

Старожил


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

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


а, точно

так, нужно чтобы работала такая строчка

Код: Выделить весь код
tool.exe -o -f "*.bin" n-unpacker.ms file.bin <место куда извлекать>
где

n-unpacker.ms - это скрипт, который использует tool.exe для извлечения из *.bin файлов

вместо <место куда извлекать>, можно поставить точку, тогда файлы извлекуться рядом с tool.exe

Отправлено: 13:34, 11-01-2011 | #7


Googler


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

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


могу еще предположить, что <место куда извлекать> не поддерживает завершающий слэш, тогда так:
Код: Выделить весь код
for /f "tokens=*" %%a in ('dir /b/s *.bin') do tool.exe -o -f "*.bin" n-unpacker.ms "%%a" "%%~dpa."
в посте #4 уже давал код для вывода всех команд в лог, чтобы была возможность проверки по одной:
Код: Выделить весь код
(for /f "tokens=*" %%a in ('dir /b/s *.bin') do @echo tool.exe -o -f "*.bin" n-unpacker.ms "%%a" "%%~dpa."
)>file.log
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:42, 12-01-2011 | #8


Аватара для Tosyk

Старожил


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

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


Код: Выделить весь код
d:\test\>tool.exe -o -F  "*.bin" n-unpacker.ms "d:\test\A_MOUNT_ROBOT_04.bin" "%~dpa." 

- open input file d:\test\A_MOUNT_ROBOT_04.bin
- open script n-unpacker.ms
- set output folder %~dpa.

- error in src\tool.c line 1013: main()
вот такой лог

Отправлено: 06:22, 12-01-2011 | #9


Googler


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

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


Цитата Tosyk:
вот такой лог »
подозреваю, что где-то используется %%A, а где-то %%a:
Код: Выделить весь код
for /f "tokens=*" %%A in ('dir /b/s *.bin') do tool.exe -o -f "*.bin" n-unpacker.ms "%%A" "%%~dpa."
регистр должен быть одним:
Код: Выделить весь код
for /f "tokens=*" %%A in ('dir /b/s *.bin') do tool.exe -o -f "*.bin" n-unpacker.ms "%%A" "%%~dpA."
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:03, 12-01-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок Nun-Nun Скриптовые языки администрирования Windows 6 14-05-2009 15:45
MSFT SQL Server - [решено] Преобразование скрипта для Oracle в скрипт для SQL EvgeniyQQQ Программирование и базы данных 3 25-03-2009 01:26
[решено] Ошибки распаковки дистрибутивов игр и архивов IWS Непонятные проблемы с Железом 21 26-12-2008 08:23
ISA 2004 + имя_программы для сохранеиня log-фалов Sidelong ISA Server / Microsoft Forefront TMG 6 15-06-2006 07:26
Защита фалов Windows Surround Microsoft Windows 2000/XP 11 29-07-2003 07:41




 
Переход