Страница 1 из 7

Вставка содержимого буфера в новый файл (текст/изображениe)

Добавлено: Чт окт 16, 2014 14:14
helb
Батник, использующий nircmd для вставки содержимого буфера (текст или изображение) в новый файл в текущей панели. Жмем хоткей (например Ctrl+Shift+V), вводим имя — получаем файл. Оставляем поле пустым — файл автоматически называется по текущей дате-времени без расширения. Формат изображения определяется nircmd по расширению (по-умолчанию PNG).
Параметр в TC: “?%O” .
Не забудьте поменять путь к nircmd на свой.

Код: Выделить всё

@echo off
REM Paste clipboard content to new file. Text or image (image format determined by extension).
REM Filename in parameter. Defaults to current date-time.
set nircmd=B:\Progs\AUTO\NirLauncher\NirSoft\nircmd-x64.exe

if not [%1]==[] goto havearg

for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set dt=%%I
set fname=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,6%
start "" /wait %nircmd% clipboard writefile %fname%
if not exist %fname% %nircmd% clipboard saveimage %fname%
exit /b

:havearg
set arg=%1
set arg=%arg:~0,1%
set arg=%arg:"=///%
if ///==%arg% (
	start "" /wait %nircmd% clipboard writefile %*
	if not exist %* %nircmd% clipboard saveimage %*
) else (
	start "" /wait %nircmd% clipboard writefile "%*"
	if not exist "%*" %nircmd% clipboard saveimage "%*"
)

Добавлено: Пт окт 31, 2014 19:44
Dimsok
Имеется такой скрипт:

' Создать файл с текстом буфера обмена (при наличии) и открыть его в редакторе
' Параметры: "%P" "<путь к редактору>"
'===================================================================================
P = WScript.Arguments(0) : Ed = WScript.Arguments(1)
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim WSH : Set WSH = CreateObject("WScript.Shell")
R = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\2007"
A = WSH.RegRead(R)
If A > 0 Then WSH.RegWrite R, 0, "REG_DWORD"
Clip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
If A > 0 Then WSH.RegWrite R, A, "REG_DWORD"
If Trim(Clip) = "" Then Quit
File = FSO.GetBaseName(FSO.GetTempName) & ".txt"
FSO.OpenTextFile(P & File, 2, True).Write Clip : WSH.Exec(Ed & " " & File) : Quit
Function Quit : Set WSH = Nothing : Set FSO = Nothing : WScript.Quit : End Function

Хотелось бы, чтобы в его модификации названия создаваемых файлов были более информативными, например, по текущему времени, со структурой, анологичной той, которая получается при работе вот с таким батом:

rem @echo off

set dd=%DATE%
set tt=%TIME%

set /a ddd=%dd:~0,2%
IF %ddd% LSS 10 (
SET day=0%ddd%) else (
SET day=%ddd%)
set month=%dd:~3,2%
set year=%dd:~6,4%

set /a ttt=%tt:~0,2%

IF %ttt% LSS 10 (
SET hour=0%ttt%) else (
SET hour=%ttt%)

SET minute=%tt:~3,2%
SET sec=%tt:~6,2%

echo %day% %month% %year% %hour% %minute% %sec%

copy nul %day%.%month%.%year%_%hour%.%minute%.%sec%.txt

Ну и чтобы была опция, открывать его в текстовом редакторе при создании или нет

Добавлено: Сб ноя 01, 2014 13:33
Flasher
Dimsok
Прочти памятку в части оформления кодов, а также ремарки снизу.
Мой скрипт (и его модификация) находится за 5 секунд хотя бы по названию. Где спрашивать и как давать ссылку на нужный пост вместо оверквотинга, надеюсь, уже рассказывать не надо (это всё также прописано в памятке).

Непосредственно по запросу ответ здесь.

Добавлено: Сб ноя 01, 2014 16:13
Dimsok
Flasher. c nircmd не открывается в блокоте и не только не открыаетя, но и не создается. А с удалением части создается без дописывания sendkeypress.

Кстати, нельзя как-то настроить, чтобы файл в уникоде создавался?

Добавлено: Сб ноя 01, 2014 16:23
Flasher
Думаю, у тебя где-то ошибка. nircmd давно обновлял?
Dimsok писал(а):А с удалением части создается без дописывания sendkeypress.
Панель сам будешь обновлять? См., там ещё с переходом пример есть.

С Юникодом у nircmd проблемы. Тут - либо скриптом либо Акелем.

Добавлено: Сб ноя 01, 2014 16:32
Dimsok
Какая ошибка? Я скопировал кнопку и поменял только путь для ниркоммандера. .А насчет обновления не знаю, моментально новый созданный файл отображается.

И ещё, ниркоммандер никак не влияет на windows script host. Вот после использования в некоторых скриптах (например тех, которые для этой же цели предназначены) стала вылазить ошибка. Помню такое и раньше было, как раз испльзовал нир. Может это совпадение, не знаю. Но эти скрипты я минут 10 назад нормально использовал

Nircmd 2.75

Добавлено: Сб ноя 01, 2014 16:39
Flasher
Dimsok писал(а):поменял только путь для ниркоммандера
Папку?
Dimsok писал(а):моментально новый созданный файл отображается.
Автообновление стоит, значит, хотя даже с ним не моментально.
Dimsok писал(а):И ещё, ниркоммандер никак не влияет на windows script host. Вот после использования в некоторых скриптах (например тех, которые для этой же цели предназначены) стала вылазить ошибка.
Так нет объектной модели, просто утилита запускается. C WSH тут вообще никаких завязок. А ошибки могут возникать только при неверном синтаксисе либо неграмотно используемых переменных в комстроке.

Добавлено: Сб ноя 01, 2014 16:44
Dimsok
%COMMANDER_PATH%\

Вот путь. Нир лежит в корневой папке тотала. Да ведь то же самое работает для создания файлов без открытия. А про неверный синтакстис, я ведь в них ничего не менял, просто использую по нажатию горячей клавиши. Ладно, после перезагруза должно нормализоваться

Добавлено: Сб ноя 01, 2014 16:50
Flasher
А у тебя в процессах не висят nircmd?
Но вообще, даже если открытия не происходит, то файл всё равно должен создаваться. Проверь.

Вопрос, а если вместо notepad прописать полный путь к редактору в кавычках - откроет?

Добавлено: Сб ноя 01, 2014 17:22
Dimsok
Нет в процессах. Да проверял не раз. Даже полный путь к блокноту указывал. А если путь к акелпад указать?

Добавлено спустя 26 минут:

Ты там кстати кавычки в параметрах не использовал. Называется, учись, студент

Добавлено: Сб ноя 01, 2014 17:45
Flasher
Не понял - там это где?

Добавлено: Сб ноя 01, 2014 18:11
Dimsok
Ну с %P. А вот все равно не работает даже с путем к редактору в кавычках. Ты тестировал у себя?

Добавлено спустя 3 минуты:

А блин, вроде щас и так работает. Я попробовал в папке с пробелами, не создавалось. Думал там надо "%P"%

Добавлено спустя 2 минуты:

Кстати, какая разница между "%P"% и "%P% Вроде и так и так работает

Добавлено спустя 9 минут:

Ооо, заработало, не понятно из за чего

Добавлено спустя 2 минуты:

Возможно у меня глюки из-за скрипта в опере для автокопирования выделенного текста

Добавлено: Сб ноя 01, 2014 18:16
Flasher
Вообще не понимаю, о чём ты. Кавычки все на месте.
Dimsok писал(а):Кстати, какая разница между "%P"% и "%P%
Не нужно вообще рассматривать вырванный кусок в контексте параметров ТС. %% возвращает в комстроке % и в данном случае касается только cmd. %P берётся в кавычки, только пребывая в одиночестве.
Dimsok писал(а):Ооо, заработало, не понятно из за чего
Что именно? Я отсюда не вижу твоих танцев с бубном.

Добавлено: Сб ноя 01, 2014 18:22
Dimsok
В 12 раз скопировал твою кнопку, сменил путь и заработало. Или в 13. Я не суеверный.

Я про то, что к примеру у тебя "%P%%date. Могут быть глюки, если будет "%P"%%date

Добавлено: Сб ноя 01, 2014 18:58
MVV
Dimsok,
Присмотрись, у него кавычки стоят вокруг всего параметра, открывающая - перед %P, закрывающая - перед пробелом и следующим параметром.