使用java中的命令提示符(Using the command prompt from java)
我试图用一些简单的命令为Windows命令提示符创建一个Java GUI。 我有一些额外输入的问题。 我可以运行“dir”命令但是当我运行“del”命令时,我需要给出确认,但我似乎无法打印出确认消息。
public static void main(String args[]) { try { Process p = Runtime.getRuntime().exec("cmd /c dir"); read(p); } catch (IOException e) { e.printStackTrace(); } } private static void read(Process p) { try{ BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; while((line=input.readLine()) != null) { System.out.println(line); } } catch(IOException e1) { e1.printStackTrace(); } }
输出:
Volume in drive E has no label. Volume Serial Number is E9ED-7E32 Directory of E:\Code\workspace\Project 04/11/2012 11:07 PM <DIR> . 04/11/2012 11:07 PM <DIR> .. 04/11/2012 09:53 PM 301 .classpath 04/11/2012 09:53 PM 383 .project 04/11/2012 09:53 PM <DIR> .settings 04/12/2012 12:09 AM <DIR> bin 04/12/2012 12:09 AM <DIR> src 04/11/2012 11:07 PM <DIR> test 2 File(s) 684 bytes 6 Dir(s) 429,106,937,856 bytes free
但是运行它会导致它挂起在
line=input.readLine()
public static void main(String args[]) { try { Process p = Runtime.getRuntime().exec("cmd /c del test"); read(p); OutputStream oStream = p.getOutpuStream(); BufferedWriter sWriter = new BufferedWriter(newOutputStreamWriter(oStream)); sWriter.write("y"); sWriter.newLine(); oStream.close(); read(p); } catch (IOException e) { e.printStackTrace(); } }
我该如何防止这种悬挂? 我也担心确认“y”没有正确发送。 我觉得它应该读取输出并写入输入,但这是我在多个站点在线发现的方式。 任何帮助,将不胜感激。
I am trying to make a Java GUI for the windows command prompt with some simple commands. I am having some issues with additional input. I can run the "dir" command but when I run the "del" command, I need to give a confirmation, but I cant seem to get it to print out the confirmation message.
public static void main(String args[]) { try { Process p = Runtime.getRuntime().exec("cmd /c dir"); read(p); } catch (IOException e) { e.printStackTrace(); } } private static void read(Process p) { try{ BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; while((line=input.readLine()) != null) { System.out.println(line); } } catch(IOException e1) { e1.printStackTrace(); } }
Output:
Volume in drive E has no label. Volume Serial Number is E9ED-7E32 Directory of E:\Code\workspace\Project 04/11/2012 11:07 PM <DIR> . 04/11/2012 11:07 PM <DIR> .. 04/11/2012 09:53 PM 301 .classpath 04/11/2012 09:53 PM 383 .project 04/11/2012 09:53 PM <DIR> .settings 04/12/2012 12:09 AM <DIR> bin 04/12/2012 12:09 AM <DIR> src 04/11/2012 11:07 PM <DIR> test 2 File(s) 684 bytes 6 Dir(s) 429,106,937,856 bytes free
But running this will cause it to hang at
line=input.readLine()
public static void main(String args[]) { try { Process p = Runtime.getRuntime().exec("cmd /c del test"); read(p); OutputStream oStream = p.getOutpuStream(); BufferedWriter sWriter = new BufferedWriter(newOutputStreamWriter(oStream)); sWriter.write("y"); sWriter.newLine(); oStream.close(); read(p); } catch (IOException e) { e.printStackTrace(); } }
How do I prevent this hanging? I am also concerned that the confirmation "y" isn't being sent correctly. I feel like it should be read the output and write the input, but this is the way that I found at multiple sites online. Any help would be appreciated.
原文:https://stackoverflow.com/questions/10117373
最满意答案
Sub Tester() Const HDR_ROW As Long = 6 Dim c As Range, sht As Worksheet, f As Range Dim lr As Long, r As Long, tmp, delCol As Boolean Set sht = ActiveSheet Set c = sht.Cells(HDR_ROW, Columns.Count).End(xlToLeft) Do While c.Column > 2 delCol = False 'reset delete flag If Instr(c.Value, ".") > 0 Then 'look for a matching column header Set f = sht.Rows(HDR_ROW).Find(Replace(c.Value, ".", ""), _ lookat:=xlWhole) 'found a column and it's not the same one we're working on... If Not f Is Nothing And f.Column <> c.Column Then Debug.Print c.Address(), f.Address() lr = sht.Cells(Rows.Count, c.Column).End(xlUp).Row 'move any non-blank values over (source data has lots of spaces?) For r = HDR_ROW + 2 To lr tmp = Trim(sht.Cells(r, c.Column).Value) If Len(tmp) > 0 Then sht.Cells(r, f.Column).Value = tmp End If Next r delCol = True 'going to delete this column End If 'header has a no-"." match End If 'header has a "." Set c = c.Offset(0, -1) If delCol Then c.Offset(0, 1).EntireColumn.Delete Loop End Sub
Sub Tester() Const HDR_ROW As Long = 6 Dim c As Range, sht As Worksheet, f As Range Dim lr As Long, r As Long, tmp, delCol As Boolean Set sht = ActiveSheet Set c = sht.Cells(HDR_ROW, Columns.Count).End(xlToLeft) Do While c.Column > 2 delCol = False 'reset delete flag If Instr(c.Value, ".") > 0 Then 'look for a matching column header Set f = sht.Rows(HDR_ROW).Find(Replace(c.Value, ".", ""), _ lookat:=xlWhole) 'found a column and it's not the same one we're working on... If Not f Is Nothing And f.Column <> c.Column Then Debug.Print c.Address(), f.Address() lr = sht.Cells(Rows.Count, c.Column).End(xlUp).Row 'move any non-blank values over (source data has lots of spaces?) For r = HDR_ROW + 2 To lr tmp = Trim(sht.Cells(r, c.Column).Value) If Len(tmp) > 0 Then sht.Cells(r, f.Column).Value = tmp End If Next r delCol = True 'going to delete this column End If 'header has a no-"." match End If 'header has a "." Set c = c.Offset(0, -1) If delCol Then c.Offset(0, 1).EntireColumn.Delete Loop End Sub
相关问答
更多-
Sub Tester() Const HDR_ROW As Long = 6 Dim c As Range, sht As Worksheet, f As Range Dim lr As Long, r As Long, tmp, delCol As Boolean Set sht = ActiveSheet Set c = sht.Cells(HDR_ROW, Columns.Count).End(xlToLeft) Do While c.Column ...
-
不可否认,这个答案仍然是一点点: https : //www.youtube.com/watch?v = 2ZO1jauV31U 但我觉得尽管有类似的原始帖子,但仍然给予了诚实的努力。 做法: 看起来你正在尝试进行一些字符串解析,返回字符串中空格的位置,然后使用Left返回左半边Mid返回中间, Right返回右边部分。 相反,我可能尝试迭代可能的条目列表,如果我找到它们,用vbNullString替换它们并打印我在B列中找到的内容 Instr([开始],[String1],[String2],[比较]: ...
-
不确定为什么你需要VBA。 假设列A应填充1到10之间的数字。列B,C和D填充其他数据。 选择单元格E1并在公式框中输入公式=IF($A1>50,A1,"")并按CTRL + Enter。 使用拖动手柄将公式复制到单元格F1,G1和H1中。 选择单元格E1到H1,双击单元格H1的拖动手柄。 Not sure why you would need VBA. Lets say that column A should be populated with numbers between 1 and 10. And ...
-
您可以像这样调用工作表函数 .Value = [Now()] You can call the worksheet function like this .Value = [Now()]
-
我没有看到你的var1中有空白,我看到缺失的值。 使用is.na(help$var1)而不是help$var1 == "" 你也想转换成角色,因为你有不同层次的因素。 help$newvar = ifelse(is.na(help$var1), as.character(help$var2), as.character(help$var1)) 当然你可以使用dplyr ,你只是创建一个列 help = mutate(help, newvar = ifelse(is.na(var1), as.charact ...
-
excel-vba如果函数消息“collection is one-based”(excel-vba if function message “collection is one-based”)[2021-08-05]
在For循环上面使用变量k但是因为你只是将它作为int进行decalared,并没有设置它,所以它默认为0. Columns.Item()是基于1(从项目1开始,不是0),所以你得到一个错误。 在使用前设置k。 Above your For loop you use variable k but because you just decalared it as an int and didn't set it, it defaults to 0. Columns.Item() is 1 based (sta ... -
最好的办法是在本机VBA代码中执行所有操作,直到最后才与Excel工作表交互。 写入工作表是一项耗时的操作,因此这个过程只执行一次,一次写入整个二维数组,而不是逐行写入。 因此,无需禁用屏幕更新,计算或其他任何操作。 Function phpStringTo2DArray(ByVal phpString As String) As Variant Dim iRow As Long Dim iCol As Long Dim nCol As Long Dim nRow As Lo ...
-
停止使用Range.Select和Selection ,它会对你有好处。 也始终使用完全合格的范围。 您的问题是,当您在表中插入列时,Excel会自动为其分配标题名称。 因此,检查空的IF条件失败。 因此,没有选择案例调用 改变这个 Columns("AF:AF").Select Selection.Insert Shift:=xlToRight 至 Columns("AF:AF").Insert Shift:=xlToRight Columns("AF:AF").Cells(1, 1) = "<
拆分数据没有明显一致的分隔符:Excel - VBA(Split Data where no obvious consistent delimiter: Excel - VBA)[2022-05-09]
我想将这些地址分成街道,郊区,州和邮政编码的单独列 我假设你的意思是街道,城市,县,国家和邮编的单独列? 设置对Microsoft VBScript RegularExpression 5.5的引用。 调整以下代码(范围): Dim rex As RegExp Dim m As Match, mc As MatchCollection Dim ran As Range, cel As Range Set rex = New RegExp rex.Pattern = "([\w\d\s\,]+?)\,([A ...假设您要复制AD列: Sub Copymc() Dim x As Workbook Dim y As Workbook Set x = Workbooks.Open("H:\testing\demo\test2.xlsx") Set y = Workbooks.Open("H:\testing\demo\test1.xlsx") Dim LastRow As Long Dim NextRow As Long ' determine where the data ends on Column B She ...相关文章
更多- storm client command
- Java运算符
- 《Windows 命令行详解手册(第2版)》(Windows Command-Line Administrator's Pocket Consultant, 2nd Edition)扫描版[PDF]
- Java修饰符
- JAVA设计模式学习21——命令模式
- Java 方法
- bash: scp: command not found的解决方法
- JAVA开源项目[转]
- JAVA开源项目[转]
- JAVA开源项目[转]
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)