Поверните буфер обмена в переменную внутри командного файла [duplicate]

Используйте getchar() перед вызовом второго scanf().

scanf("%c", &c1);
getchar();  // <== remove newline
scanf("%c", &c2);
21
задан bluish 30 July 2012 в 14:00
поделиться

7 ответов

Чтобы извлечь содержимое буфера обмена из вашего пакетного скрипта: нет «чистого» пакетного решения.

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

Вот короткое и пакетное встроенное решение, которое генерирует файл VB (обычно устанавливаемый на большинстве окон)

18
ответ дан Community 27 August 2018 в 23:14
поделиться

Выход трубопровода в буфер обмена предоставляется клипом, как говорили другие. Чтобы прочитать вход из в буфер обмена, используйте инструмент pclip в этот комплект . И там есть много других хороших вещей.

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

c:\>pclip > MyNewFile.txt

или вы хотите выполнить скопированную команду ...

c:\>pclip | cmd
1
ответ дан bbsimonbb 27 August 2018 в 23:14
поделиться

С Vista или выше он встроен. Просто выведите трубку в программу «clip». Вот запись (по мне): http://www.clipboardextender.com/general-clipboard-use/command-window-output-to-clipboard-in-vista В статье также содержится ссылка к бесплатной утилите (написанной мной, я думаю) под названием Dos2Clip, которую можно использовать в XP.

EDIT: Я вижу, что у меня вопрос обратно, мое решение OUTPUTS в буфер обмена, doesn Не читал. извините!

Обновление: вместе с Dos2Clip - Clip2Dos (в том же zip-файле), который отправит текст буфера обмена в stdout. Так что это должно сработать для вас. Источник Pascal включен в zip.

2
ответ дан Chris Thornton 27 August 2018 в 23:14
поделиться

Поскольку все ответы путаются, здесь мой код без задержек или дополнительных окон, чтобы открыть ссылку на поток, скопированную из буфера обмена:

@ECHO OFF
//Name of TEMP TXT Files
SET TXTNAME=CLIP.TXT
//VBA SCRIPT
:: VBS SCRIPT
ECHO.Set Shell = CreateObject("WScript.Shell")>_TEMP.VBS
ECHO.Set HTML = CreateObject("htmlfile")>>_TEMP.VBS
ECHO.TXTPATH = "%TXTNAME%">>_TEMP.VBS
ECHO.Set FileSystem = CreateObject("Scripting.FileSystemObject")>>_TEMP.VBS 
ECHO.Set File = FileSystem.OpenTextFile(TXTPATH, 2, true)>>_TEMP.VBS
ECHO.File.WriteLine HTML.ParentWindow.ClipboardData.GetData("text")>>_TEMP.VBS
ECHO.File.Close>>_TEMP.VBS
cscript//nologo _TEMP.VBS

:: VBS CLEAN UP
DEL _TEMP.VBS

SET /p streamURL=<%TXTNAME%

DEL %TXTNAME%

:: 1) The location of Player
SET mvpEXE="D:\Tools\Programs\MVP\mpv.com"

:: Open stream to video player
%mvpEXE% %streamURL%


@ECHO ON
-1
ответ дан emery 27 August 2018 в 23:14
поделиться

Команда клипа хороша, чтобы передать текст в буфер обмена, но он не может читать из буфера обмена. В vbscript / javascript есть способ чтения / записи буфера обмена, но он использует автоматизацию и невидимый экземпляр, если Internet Explorer сделает это так, чтобы он был довольно толстым.

Лучший инструмент, который я нашел для работы с буфером обмена из скрипта, - это бесплатный инструмент NirCmd от Nirsoft.

http://www.nirsoft.net/utils/nircmd. html

Это похоже на швейцарский армейский нож пакетных команд в одном маленьком файле .exe. Для команд буфера обмена, которые вы бы сказали, например

nircmd clipboard [Действие] [Параметр]

Кроме того, вы можете напрямую ссылаться на содержимое буфера обмена в любой из своих команд, используя переменную ~ $ clipboard $ как аргумент. Nircmd также имеет команды для запуска других программ или команд, поэтому можно использовать его для передачи содержимого буфера обмена в качестве аргумента для других команд партии таким образом.

Действия с буфером обмена:

      set - set the specified text into the clipboard. 
 readfile - set the content of the specified text file into the clipboard. 
    clear - clear the clipboard. 
writefile - write the content of the clipboard to a file. (text only) 
  addfile - add the content of the clipboard to a file. (text only) 
saveimage - Save the current image in the clipboard into a file. 
copyimage - Copy the content of the specified image file to the clipboard. 
  saveclp - Save the current clipboard data into Windows .clp file. 
  loadclp - Load Windows .clp file into the clipboard. 

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

2
ответ дан klaatu 27 August 2018 в 23:14
поделиться

Похудение (в новой достаточно новой версии Windows):

set _getclip=powershell "Add-Type -Assembly PresentationCore;[Windows.Clipboard]::GetText()"
for /f "eol=; tokens=*" %I in ('%_getclip%') do set CLIPBOARD_TEXT=%I
  1. Первая строка объявляет командный файл powershell.
  2. Вторая строка запускается и захватывает консольный вывод этого командного элемента в переменную среды CLIPBOARD_TEXT (ближайший способ cmd.exe сделать захват ` стиля `]

Обновление 2017- 12-04:

Спасибо @Saintali за то, что PowerShell 5.0 добавляет Get-Clipboard в командлеты верхнего уровня, поэтому теперь он работает как один лайнер:

for /f "eol=; tokens=*" %I in ('powershell Get-Clipboard') do set CLIPBOARD_TEXT=%I

4
ответ дан Refael Ackermann 27 August 2018 в 23:14
поделиться

Это может быть не точный ответ, но он будет полезен для вашего квеста.

Исходное сообщение: Посетите https://groups.google.com/d/msg/alt. msdos.batch / 0n8icUar5AM / 60uEZFn9IfAJ Отвечено на вопрос Роджера Ханта. Ответил Уильям Аллен


. Более простые шаги:

Шаг 1) создать файл 'bat' с именем Copy.bat на рабочем столе с использованием любых текстовых редакторов и копией и прошлым ниже кода и сохраните его.

  @ECHO OFF
  SET FN=%1
  IF ()==(%1) SET FN=H:\CLIP.TXT

  :: Open a blank new file
  REM New file>%FN%

  ECHO.set sh=WScript.CreateObject("WScript.Shell")>_TEMP.VBS
  ECHO.sh.Run("Notepad.exe %FN%")>>_TEMP.VBS
  ECHO.WScript.Sleep(200)>>_TEMP.VBS
  ECHO.sh.SendKeys("^+{end}^{v}%%{F4}{enter}{enter}")>>_TEMP.VBS
  cscript//nologo _TEMP.VBS

  ECHO. The clipboard contents are:
  TYPE %FN%

  :: Clean up
  DEL _TEMP.VBS
  SET FN=

Шаг 2) создайте пустой текстовый файл (в моем случае «CLIP.txt» в H Drive) или в любом месте, убедитесь, что вы обновили путь в файле Copy.bat в разделе «FN = H: \ CLIP.txt» с вашим целевым файловым путем.

Вот и все.

Итак, в основном, когда вы копируете любой текст из любого места и запускаете файл Copy.bat с рабочего стола, он обновляет файл CLIP.txt с содержимым буфера обмена и сохраняет его.

Использует:

I использовать его для передачи данных с удаленных компьютеров, где копирование / вставка отключена между различными соединениями; где общий диск (H :) является общим для всех подключений.

0
ответ дан Srivastav Reddy 27 August 2018 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: