Tag: cmd

如何在C#中获取CMD /控制台编码

我需要指定正确的代码页来打包带有zip库的文件。 我看,我需要指定控制台编码(在我的情况下为866)。 C:\Users\User>mode Status for device CON: ———————- Lines: 300 Columns: 130 Keyboard rate: 31 Keyboard delay: 1 Code page: 866 <- I need to get this value in C# code Console.OutputEncoding返回1251,这不是我需要的。 谢谢, 亚历克斯 更新1:显然,在cmd.exe中执行“mode”并解析输出应该有效但看起来太粗鲁了。 我正在寻找.NET解决方案。 更新2:应用程序是Windows窗体应用程序,而不是控制台应用程序。

从C#调用批处理文件

我希望这是一个简单的问题,但我在我的C#应用​​程序中有以下代码,由于某种原因它不会执行我指向的批处理文件。 private void filesystemwatcher_Renamed(object sender, System.IO.RenamedEventArgs e) { if (File.Exists(“C:\\Watcher\\File.txt”)) { System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents = false; proc.StartInfo.FileName = “C:\\Watcher\\Cleanup.bat”; proc.Start(); MessageBox.Show(“Cleaned up files, your welcome.”); } else { label4.Text = “Error: No file found”; } } 它将正确显示消息框,因此我知道它已到达该代码区域,但我没有看到弹出的cmd框或任何显示它只是运行批处理文件的内容。 我也可以告诉因为cleanup.bat只是重命名一个文件,就是这样。 收到消息框后,文件名未更改。 如果我手动双击批处理文件,它可以正常工作。 我还将批处理文件的权限调整为每个人的完全控制(仅用于测试目的)

关于NTFS重新分析点(符号链接/目录连接)的路径规范化?

不幸的是,我在Windows上,我需要POSIX realpath 。 假设CMD批处理脚本中有一个dirpath变量: FOODIR=D:/tmp/foo/bar/quux 其中一个或多个dirpath的中间组件是符号链接 (Microsoft用语中的目录连接 ): [/cygdrive/d/tmp]$ cmd /C dir /Ad /l … Directory of D:\tmp … 2014-12-10 16:44 foo [D:\storage\foo.canonical] 如何编写一个函数,将%FOODIR%转换为D:/storage/foo.canonical/bar/quux ? 任何解决方案欢迎

哪个更适合用于定期工作:服务或计划任务?

我有一项需要每30秒运行一次的任务。 我可以做两件事之一: 编写一个运行任务一次的命令行应用程序,等待30秒,再次运行它然后退出。 我可以使用Windows中的计划任务安排此任务,以便每分钟运行一次 编写一个在每次运行之间等待30秒的情况下重复运行任务的服务。 在我看来,1号更简单,我会默认选择这样做。 我懦弱了吗? 我有理由将其作为服务而不是计划任务吗? 两者的优点和缺点是什么,你最后会选择哪一个?

如何通过手动输入流将命令提供给cmd.exe进程?

问题听起来有点密集。 这是一个稍长的版本: 我需要让主循环等待用户输入,并且还要运行一个进程并等待用户输入要发送到的流的输入。 全文:我正在构建一个Cmd模拟器,起初一切看起来都很好:用户输入一个命令,它会回显到输出区域,处理完毕,StdOut和StdErrOut被捕获并添加到输出TextBox中。 唯一的问题是,当为每个命令创建并单独启动cmd进程时,没有保留任何状态。 既不是变量也不是代码页,也不是工作目录等。 所以我决定发明一点hack:输入一个开括号或右括号开始和停止收集命令而不是执行它们。 在右括号之后,在processBatch方法中使用命令列表(’batch’)将它们全部提供给cmd进程,并将其重定向输入。 工作得很好。 唯一的问题是,显然,现在我已经获得状态但是立即失去了响应,因此在批处理运行之前不会弹出任何错误。 因此,我决定将好的部分结合起来,而且,当我意识到,为了保持两个循环工作并等待我必须使用线程,我知道我正在找麻烦。 多年来我没有做过…… 在布局中,我选择了main()循环等待用户输入,startCMDtask()在任务中运行startCMD()。 这里扫描输入流,直到有数据,然后cmd进程处理它们。 但它不起作用。 List batch = new List(); public volatile string output = “+”; public volatile string outputErr = “-“; Process CMD; Task cmdTask; volatile Queue cmdQueue = new Queue(); volatile public bool CMDrunning = false; 这个工作得很好 private void processBatch() { Process p […]

在c#中读取/写入命令行程序

我正在尝试与C#的命令行程序交谈。 它是一种情绪分析器。 它的工作原理如下: CMD> java -jar analyser.jar >Starting analyser… {这是我想从我的c#程序中插入内容的地方。 例如:} I love you! {并且程序响应 – 我想读这个} Very Positive 这是一些伪代码: Process.start(“sentiment.exe”); Process.writeline(“I love you”); string Response = Process.readline(); C#提供哪些方法来写入流程的标准输入并从其标准输出读取?

对文件C#执行OS命令

我试图通过C#执行操作系统命令。 我从这个网页上获得了以下代码: //Execute command on file ProcessStartInfo procStart = new ProcessStartInfo(@”C:\Users\Me\Desktop\Test\System_Instructions.txt”, “mkdir testDir”); //Redirects output procStart.RedirectStandardOutput = true; procStart.UseShellExecute = false; //No black window procStart.CreateNoWindow = true; //Creates a process System.Diagnostics.Process proc = new System.Diagnostics.Process(); //Set start info proc.StartInfo = procStart; //Start proc.Start(); 但是当我尝试运行代码时,我收到以下错误: {“The specified executable is not a valid application for this OS […]

C#.NET控制台应用程序使用的控制台字体和布局

我如何设置Windows(或Visual Studio,或我的应用程序),以便当我通过从Visual Studio 2010中按F5运行控制台应用程序时,我可以使用我选择的字体而不是80×25标准CMD / DOS获得120×50布局窗口? (甚至更好 – 有谁知道如何让VS在Console2或bash而不是cmd.exe中运行控制台应用程序?)

以编程方式在cmista中运行cmd.exe作为管理员,c#

我有一个visual studio设置和部署项目。 我在其中添加了一个.cmd脚本。 该脚本需要管理员权限才能运行。 当用户单击setup.exe时,UAC会提示用户输入管理员权限。 所以我假设在setup.exe中创建和调用的所有进程都将以管理员身份运行。 所以我设置调用我的控制台应用程序,其中包含以下代码。 ProcessStartInfo p1 = new ProcessStartInfo(); p1.UseShellExecute = true; p1.Verb = “runas”; p1.FileName = “cmd.exe”; Process.Start(p1); 所以它应该工作,因为它在管理员空间下运行。 我想通过c#进程类作为管理员运行cmd.exe。我正在运行windows vista。 我试过没办法! 我能做什么!

创建msbuild脚本以使用指定的app.config进行构建,发布,并从不同位置进行更新

我到处搜索这个解决方案,找不到任何东西! 我想有一个msbuild脚本来执行以下操作: 构建项目解决方案 使用指定的app.config(app.config.debug或app.config.release)将构建的解决方案发布到指定的文件夹(开发或生产) 使用指定的配置,知道检查更新的位置。 -if deployment – >签入示例生产文件夹 -if development – >签入示例开发文件夹 该脚本目前有效但有两个问题…… 我无法弄清楚如何让两个不同的安装检查两个不同的地方来检查更新。 我无法自动增加修订版本。 每次使用脚本时,它目前都保持相同的内部版本号。 我的当前脚本: msbuild “C:\sample\sample.csproj” /t:clean /t:build /t:publish /p:Configuration=release /property:PublishDir=”C:\Samplelocation/” /property:UpdatedEnabled=true /property:UpdateRequired=true /property:UpdateUrl=”C:\Samplelocation/” /property:GenerateManifests=true /property:PublishWizardCompleted=true 任何帮助将不胜感激。 提前谢谢!