- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想自动化批处理文件。这需要两个参数依次运行。
以下是我执行此批处理文件的手动步骤--
1-Execute a ext.bat file from command line.
2- Asks for a path-
Please enter the path for code
3-Manual entry-- c:/
4- Press enter key.
5- Asks for folder name.
Please enter the directory name
6-Manual entry-- mydir
7-Press enter key.
有没有类似的方法(仅适用于.sh脚本)。
添加以下更多详细信息 ---
这个批处理文件在内部调用一个独立的java类--以下是批处理文件
@echo off
setlocal
set classpath=C:\Users\abc\Documents\jar\instance.jar;%classpath%
"%JAVA_HOME%"\bin\java nstance.ABCUtil
这一一提出了两个问题。以下是类中的调用部分。
这个 ABCUtil 类
final Console console = System.console();
// Read Instance absolute directory from the console
final String DirHome = console.readLine(abc.HOME_ABSOLUTE_path);
final String Dir = console.readLine(abc.HOME_ABSOLUTE_DIR_name);
所以它只能从控制台获取值...我不能这样调用。这行不通。
java ABCUtil path dir
注意 - 我无法安装任何其他工具来执行此操作,例如 TCL、cygwin 等。我的 M/C 有操作系统- windows 7 64 位
请帮助--亲爱的师父......
最佳答案
如果您确实在寻找简单的 Windows 批处理解决方案,这里是从 PostgreSQL 批处理衍生的一个解决方案。
SET path=c:\
SET /P path="Path of code [%path%]: "
SET folder=\
SET /P folder="Folder name [%folder%]: "
REM and do what you want with those values ...
echo %path%
echo %folder%
此方法甚至允许建议默认值。
编辑
我刚刚看到你的java代码是从控制台读取的,而不是从标准输入读取的,所以没有重定向解决方案会有所帮助。也许你应该看看下面来自SO How to simulate keyboard presses in java?的帖子
编辑2
所以问题并不像我首先想到的那样批量询问参数,而是自动化一个在控制台上询问两个参数的java程序。机器人是自动化这些事情的一个好技巧。我写了一段java来模拟在键盘上输入参数然后按回车键。我自己的技巧是使用 Alt xyz 为任何字符发送正确的 KeyEvent。
您应该只执行 java -jar ...\RoboSend.jar "ext.bat""real_path""real_folder"
或 java -jar ...\RoboSend.jar "ext.bat“%路径%%文件夹%
package org.sba.robotsend;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
/**
* This program simulates the typing of its arguments on Console keyboard.
* Each argument is send via Robot to the console, followed by an Enter key
* Ex : java -j RobotSend.jar "echo foo" "echo bar" gives :
* c:\> echo foo
* foo
* c:\> echo bar
* bar
*
* It is intented to automate programs reading their input on the Console
*
* @author serge.ballesta
*/
public class RobotSend {
private Robot robot;
private Charset cp850;
private static final int[] keys = { KeyEvent.VK_NUMPAD0, KeyEvent.VK_NUMPAD1,
KeyEvent.VK_NUMPAD2, KeyEvent.VK_NUMPAD3, KeyEvent.VK_NUMPAD4,
KeyEvent.VK_NUMPAD5, KeyEvent.VK_NUMPAD6, KeyEvent.VK_NUMPAD7,
KeyEvent.VK_NUMPAD8, KeyEvent.VK_NUMPAD9
};
/**
* This program simulates the typing of its arguments on Console keyboard.
* Each argument is send via Robot to the console, followed by an Enter key
* Ex : java -j RobotSend.jar "echo foo" "echo bar" gives :
* c:\> echo foo
* foo
* c:\> echo bar
* bar
*
* It is intented to automate programs reading their input on the Console
* @param args the command line arguments
*/
public static void main(String[] args) {
RobotSend robot = new RobotSend();
try {
robot.run(args);
}
catch (Exception e) {
e.printStackTrace();
}
}
public void run(String[] args) throws AWTException {
robot = new Robot();
cp850 = Charset.forName("IBM850");
for (String str: args) {
sendString(str);
}
}
/**
* Send a byte using the Alt xyz sequence.
* the byte must be in CP850 code page, indipendently of the actual code
* page of the console (at least for System natively in CP850 ...)
* @param c the byte (char) to be inputted via keyboard
*/
public void sendByte(byte c) {
int i = (int) c;
if (i < 0) { i = 256 + i; }
if (i < 0 || i > 255) { i = 'X'; }
int i1 = i / 100;
int i2 = (i % 100) / 10;
int i3 = i % 10;
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(keys[i1]);
robot.keyRelease(keys[i1]);
robot.keyPress(keys[i2]);
robot.keyRelease(keys[i2]);
robot.keyPress(keys[i3]);
robot.keyRelease(keys[i3]);
robot.keyRelease(KeyEvent.VK_ALT);
}
/**
* Simulate a Enter
*/
public void sendEnter() {
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
}
/**
* Send a String via the Console keyboard.
* The string is first encoded in CP850, sent one char at a time via sendByte
* and followed by an Enter key
* @param str
*/
public void sendString(String str) {
ByteBuffer buf = cp850.encode(str);
for (byte b: buf.array()) {
sendByte(b);
}
sendEnter();
}
}
关于java - 需要自动化一个批处理文件,该文件在运行时依次接受两个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24117871/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 5 年前。 Improve t
背景 我有一个 Azure Runbook(名为 RunStoredProcedure2),定义如下: param( [parameter(Mandatory=$True)] [string] $Sq
我有一个名为“团队”的表,其中包含“非事件”列,另一个表“事件”,其中包含“时间”列。如果任何团队的“事件”中的最新日期发生在 X 时间之前,如何将“非事件”列更新(为 true)? 我知道这可以通过
下面的问题可能有点令人困惑,但我会尽力以最好的方式解释它。 假设我们为一家制造公司工作。它制造然后用于制造产品的组件。在以下示例中,有 3 个组件和 2 个最终产品。 组件和产品的需求如下: comp
我有代码可以让我在一个范围内选择一个项目: COleVariant vItems = cstrAddr; hr = AutoWrap(
我正在开发一个应用程序,该应用程序有 4 种语言的大约 50 个应用内购买,这给了我很多表单和子表单、框和子框,需要使用 iTunesConnect 的令人痛苦且设计糟糕的表单来填充。 我想知道是否有
我想在 Azure 自动化中使用 powershell 脚本来安排打开/关闭资源。 我想在不创建帐户的情况下执行此操作,因为我们的域强制重置密码。我知道自动化帐户会创建一个证书 - 当使用资源管理器(
我尝试从 azure 自动化 run book power shell 自动检索 azure SQL 数据库中的数据。我发现azure自动化帐户的模块中缺少SQL Server模块。我已经导入了该模块
我正在自动化 Outlook,并且需要控制电子邮件的发件人身份。用户将在 Outlook 中设置两个或多个帐户,我需要能够选择从哪个帐户发送电子邮件。有什么想法吗? 需要 Outlook 2003 及
我尝试从 azure 自动化 run book power shell 自动检索 azure SQL 数据库中的数据。我发现azure自动化帐户的模块中缺少SQL Server模块。我已经导入了该模块
假设我有一个网站,我可以(随时)登录并每隔 x 小时提交数据(单击登录后可见的链接),我将如何自动化此过程? 我构建了一个图形用户界面,它为用户(现在是我,为了我自己的方便)提供了一个包含一些信息的界
我正在开发一个程序,它的任务是我们为它定义一些号码(我们的一些手机号码)并且它应该在 Telegram 中注册它们,然后获取发送到该号码的所有消息。如您所知,在 Telegram 中注册需要提供电话号
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
最近我在处理 CSS Sprite 。一切正常。 我创建了一个 sprite、.css 文件和 html 结构。看起来像 .sprites{ background-image:url
我想为一款名为 Dune 2000 的策略游戏创建一个叠加层。令人讨厌的是,要创建 10 个士兵,每次完成一个都必须单击该图标。没有队列。因此,在不干扰游戏运行方式的情况下,我想听听鼠标移动的声音,当
我是 python 的初学者,我想从自动化开始。以下是我正在尝试执行的任务。 ssh -p 2024 root@10.54.3.32 root@10.54.3.32's password: 我尝试通过
当我将一些 urlencoded Javascript 粘贴到 Firefox 和 Chrome 上的 URL 时,我看到了一些奇怪的事情发生。是否可以使用此技术告诉 Chrome 访问 URL,然后
我需要将大量请求自动提交到基于云的数据库接口(interface) (Intelex)。没有任何方法可以批量提交某些操作,但是提交单个请求所必需的只是让经过身份验证的用户尝试打开 Web 链接。因此,
假设我有一个进程的内存转储。我想对其运行报告,所以基本上我想打开 WinDBG,加载 SOS 并运行一个脚本,该脚本运行一些命令,解析输出,然后基于此运行更多命令。 除了像 SendKeys 这样的
我正在使用 ffmpeg 创建视频剪辑。我想自动化该过程并保存剪辑,而无需手动为要保存的每个文件命名。这是我拥有的代码。它将创建并保存剪辑,但只能使用扩展名和不是名字。 @echo off cd /d
我是一名优秀的程序员,十分优秀!