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

Dodakaedr 18-07-2014 20:05 2378132

Переименовать и запустить
 
Здравствуйте, дайте, пожалуйста, пример вот такого батника: имеется файл *.dat в папке Арр теперь его надо переименовать в *.exe и запустить.....вот и все, вроде не сложно, но не знаю как сделать.

Iska 19-07-2014 00:04 2378211

Dodakaedr, «Арр» или «App»:



?! Я решил, что таки «App», а не «Арр».

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
        `dir /b /a:-d "App\*.dat" 2^>nul`
) do (
        ren "App\%%~i" "%%~ni.exe"
        "App\%%~ni.exe"
        goto :Out
)

:Out

endlocal
exit /b 0


Dodakaedr 19-07-2014 12:43 2378345

Iska, Спасибо! Но оказалось этот способ не работает, так как запускается командная строка. Можно как-то указать запуск именно на dat файл и при этом запретить запуск командной строки? И как вы так определили какой именно App нужен?

Georgio 19-07-2014 13:30 2378367

Цитата:

Цитата Dodakaedr
Можно как-то указать запуск именно на dat файл и при этом запретить запуск командной строки? »

Код:

@echo off
set pathext=%pathext%;.dat
for %%i in ("App\*.dat") do start "" "%%i"& exit /b


Dodakaedr 19-07-2014 17:22 2378488

Georgio, Спасибо! Но командная строка по прежнему запускается... надо наверное сделать следующее: запустить dat файл а с ним автоматом запускается командная строка, и вот эту самую строку запустить в скрытом режиме а потом когда запуститься программа закрыть строку. Реально такое сделать?

Iska 19-07-2014 18:50 2378524

Dodakaedr, выкладывайте Ваш «*.dat», упаковав его в архив.

Цитата:

Цитата Dodakaedr
И как вы так определили какой именно App нужен? »

На картинке видно.

Dodakaedr 19-07-2014 20:15 2378563

Цитата:

Цитата Iska
На картинке видно. »

Вижу! И что оно такое: программа, сервис???
Цитата:

Цитата Iska
выкладывайте Ваш «*.dat», упаковав его в архив. »

Вот Ссылка

Iska 19-07-2014 23:19 2378632

Цитата:

Цитата Dodakaedr
Вижу! И что оно такое: программа, сервис??? »

Вы писали, что это имя папки:
Цитата:

Цитата Dodakaedr
в папке Арр »

при этом обозвали её в тексте по-русски «Арр». Я же решил, что сие навряд ли может быть, и имя папки скорее всего должно быть на латыни — чему, собственно, и служит подтверждением имя папки на латыни в выложенном архиве.

Цитата:

Цитата Dodakaedr
Вот Ссылка »

У меня мой код отработал корректно, переименовав «App\WinUtilities.dat» в «App\WinUtilities.exe» и запустив его. При этом внутри «App» была создана структура каталогов/файлов в папке «WinUtilities». Аналогичным образом отработал и код коллеги Georgio.

Цитата:

Цитата Dodakaedr
Но командная строка по прежнему запускается... надо наверное сделать следующее: запустить dat файл а с ним автоматом запускается командная строка, и вот эту самую строку запустить в скрытом режиме а потом когда запуститься программа закрыть строку. »

Окно консоли, которое Вы почему-то ошибочно называете «командной строкой», относится непосредственно к исполняемому файлу «WinUtilities.dat», имеющему тип «Win32 console» ;).

Цитата:

Цитата Dodakaedr
Реально такое сделать? »

Откуда Вы брали этот самый «WinUtilities.dat»? Источник происхождения каков7

Georgio 19-07-2014 23:20 2378634

Код:

@echo off
for %%i in ("App\*.dat") do (
 mshta "vbscript:CreateObject("WScript.Shell").Run("cmd"&chr(32)&"/c"&chr(32)&chr(34)&"%%i"&chr(34),0,False)&close"
 exit /b
 )


Iska 19-07-2014 23:32 2378646

Или так:
Код:

@set @x=0 /*
@echo off

for /f "usebackq delims=" %%i in (
        `dir /b /a:-d "App\*.dat" 2^>nul`
) do cscript /nologo /e:javascript %0 & goto:eof */
WScript.CreateObject('WScript.Shell').Run('cmd.exe /c"App\\WinUtilities.dat"', 0, false);

Но проще сменить Subsystem с CUI на GUI.

Dodakaedr 20-07-2014 00:08 2378665

Спасибо! Но консоль все равно видна.
Цитата:

Цитата Iska
Откуда Вы брали этот самый «WinUtilities.dat»? Источник происхождения каков7 »

VMWareThinApp

Цитата:

Цитата Iska
при этом обозвали её в тексте по-русски «Арр». Я же решил, что сие навряд ли может быть, и имя папки скорее всего должно быть на латыни »

Спрошу по другому: как вы получили такую картинку? С помощью чего?

Iska 21-07-2014 10:09 2379179

Цитата:

Цитата Dodakaedr
Но консоль все равно видна. »

У меня —нет. Ни на одном из кодов из #9/#10. Сожалею. Чтение документации на VMware ThinApp не принесло результатов.

Цитата:

Цитата Dodakaedr
Спрошу по другому: как вы получили такую картинку? С помощью чего? »

Я скопировал текст из Вашего первого поста и вставил его в редактор Far Manager'а. Затем там же «ручками» набрал «App» по латыни. Добавил пробелов для выравнивания. Сохранил файл. Открыл его на просмотр. Перевёл в режим отображения шестнадцатеричных кодов. Сделал скриншот посредством PicPic. Добавил выделение, стрелки и выложил на публичный хостинг.

Dodakaedr 21-07-2014 14:52 2379316

Цитата:

Цитата Iska
Я скопировал текст из Вашего первого поста и вставил его в редактор Far Manager'а. Затем там же «ручками» набрал «App» по латыни. Добавил пробелов для выравнивания. Сохранил файл. Открыл его на просмотр. Перевёл в режим отображения шестнадцатеричных кодов. Сделал скриншот посредством PicPic. Добавил выделение, стрелки и выложил на публичный хостинг. »

Понял!

Georgio 26-07-2014 19:16 2381665

Цитата:

Цитата Iska
Я скопировал текст из Вашего первого поста и вставил его в редактор Far Manager'а. Затем там же «ручками» набрал «App» по латыни. Добавил пробелов для выравнивания. Сохранил файл. Открыл его на просмотр. Перевёл в режим отображения шестнадцатеричных кодов. Сделал скриншот посредством PicPic. Добавил выделение, стрелки и выложил на публичный хостинг. »



Можно и так:

Код:

@echo off
echo Арр>1.txt
echo App>2.txt
for /f "skip=1 tokens=2,3" %%i in ('fc /b 1.txt 2.txt') do (
 call set x=%%x%% %%i
 call set y=%%y%% %%j
 )
del 1.txt 2.txt
chcp 1251>nul
for %%i in ("Арр -%x%" "App -%y%") do (
 chcp 866>nul
 echo %%~i
 chcp 1251>nul
 )
pause>nul
exit /b

.

Iska 26-07-2014 19:36 2381675

Georgio, по hex-кодам сразу видно, что не латиница. Для себя я «на автомате» проделал только это: «Ctrl-Insert», «Alt-Tab», «Shift-F4», «Ctrl-Down», «Down», «Down», «Enter», «Enter», «Shift-Insert», «F2», «F6», «F4» — без набора «App» по латыни, создания скриншота и рисования стрелок. Всё это было сделано только для демонстрации.


Время: 07:00.

Время: 07:00.
© OSzone.net 2001-