Что означает cscript //NoLogo?

Это программный код Java, который запускает программу «Блокнот» и вставляет определенный текст, хранящийся в самой программе....

Мне было интересно, можете ли вы объяснить мне значение String vbs, а также File file и ("cscript //NoLogo " + file.getPath()) в Process p. Если вы столь же великодушны, то, пожалуйста, объясните мне весь код.

Я новичок в Java, ну, не совсем так, но если вы хотите оценить от 0 до 10, я бы поставил 1,5/10.

import java.io.File;
import java.io.FileWriter;
import javax.swing.JTextField;

 public class PasteToNotepad {

   public static void main(String[] args) throws Exception {
     String text = "Some text for testing.";
     JTextField textField = new JTextField(text);
     textField.setSelectionStart(0);
     textField.setSelectionEnd(text.length() - 1);
     textField.copy();

     String vbs = ""
             + "Set WshShell = WScript.CreateObject(\"WScript.Shell\")\n"
             + "WshShell.Run \"notepad\", 9\n"
             + "WScript.Sleep 500\n"
             + "WshShell.SendKeys \"^V\"";

     File file = File.createTempFile("PrintDialog", ".vbs");
     file.deleteOnExit();
     FileWriter fw = new java.io.FileWriter(file);
     fw.write(vbs);
     fw.close();
     Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
     p.waitFor();
   }
 }

person Sarsur.A    schedule 06.08.2012    source источник


Ответы (2)


Несмотря на то, что этот вопрос не был главным образом о cscript //NoLogo, независимо от его названия, он по-прежнему хорошо гуглится для этой фразы, так что давайте ответим и на него слишком подробно.

Я не уверен, почему они называют это «логотипом», но это именно то, что вы могли подумать из встроенной справки, отображаемой @MByD. Но в интересах сверхполноты...

C:\prompt>cscript spam.js
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

C:\prompt>cscript //NoLogo spam.js

C:\prompt>

Поэтому, если вы передаете вывод по конвейеру и не хотите использовать весь этот шаблон Microsoft, \\Nologo-ify его.

C:\prompt>cscript spam.js > out.txt

C:\prompt>more out.txt
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.


C:\prompt>cscript spam.js //NoLogo > out.txt

C:\prompt>more out.txt

C:\prompt>

spam.js есть var spam = "spam";.)

И, вау, это ужасно запутанный способ вставить текст в Блокнот. Я предполагаю, что это больше касается обучения тому, как писать в файл и exec команду из Java, возможно?

person Community    schedule 17.02.2015

Что вы в основном делаете, это:

  1. Создайте строку, содержащую скрипт (String vbs = ...)
  2. Запишите его в файл (от File file = File... до fw.close())
  3. Выполните этот скрипт в отдельном процессе, вызвав cscript (Process p = Runtime.getRuntime().exec(...))

Что касается cscript //NoLogo, это практически не имеет ничего общего с Java, это команда Windows:

C:\Documents and Settings\bsharet>cscript
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.

Usage: CScript scriptname.extension [option...] [arguments...]

Options:
 //B         Batch mode: Suppresses script errors and prompts from displaying
 //D         Enable Active Debugging
 //E:engine  Use engine for executing script
 //H:CScript Changes the default script host to CScript.exe
 //H:WScript Changes the default script host to WScript.exe (default)
 //I         Interactive mode (default, opposite of //B)
 //Job:xxxx  Execute a WSF job
 //Logo      Display logo (default)
 //Nologo    Prevent logo display: No banner will be shown at execution time
 //S         Save current command line options for this user
 //T:nn      Time out in seconds:  Maximum time a script is permitted to run
 //X         Execute script in debugger
 //U         Use Unicode for redirected I/O from the console
person MByD    schedule 06.08.2012
comment
Итак, как запустить эту программу (Notepad.exe) и как ее изменить? - person Sarsur.A; 06.08.2012
comment
Программа запускает cscript, а не блокнот, тогда сценарий, выполняемый cscript, запускает блокнот. как его изменить - зависит от того, чего вы хотите добиться. - person MByD; 06.08.2012
comment
скажем, я хочу запустить мессенджер, который существует в C:\Program Files\Windows Live\Messenger\msnmsgr.exe, другое дело, но как этот код запустил Блокнот, если в этом коде не видно пути? - person Sarsur.A; 06.08.2012
comment
это потому, что notepad.exe находится в пути Windows, опять же, ничего не связанного с Java, это просто окна. - person MByD; 06.08.2012
comment
Итак, последнее, на что вы мне не ответили, где я могу указать путь, если я хочу запустить что-то еще не в пути Windows? потому что я пытался установить путь вместо слова блокнота в этой строке: ( + WshShell.Run \notepad\, 9\n ) без фигурных скобок... - person Sarsur.A; 06.08.2012
comment
Да, я знаю об этом шаге, но извините, я пытаюсь запустить эту программу на любом устройстве, на котором этот шаг не установлен... - person Sarsur.A; 06.08.2012