有没有办法在没有命令提示符的情况下在Windows中创建文件夹?我跑的时候
cmd /C mkdir "C:\Path\To\Dir"
它会导致快速显示和隐藏cmd窗口的闪烁(我想避免这种情况)。 我跑的时候
rundll.exe shell32.dll,SHCreateDirectory "C:\Path\To\Dir"
或
rundll.exe kernel32.dll,CreateDirectoryA "C:\Path\To\Dir"
命令传递得很好,但是没有创建我想要创建的目录。拥有这样的命令也可以用于创建具有完全不存在路径的目标。
EDIT2: 我发现有点讨厌,但解决这个问题的工作方法: 我发现我可以使用该专有应用程序创建文本文件。所以首先我创建了文件: run.vbs 然后我写了几行:
If WScript.Arguments.Count >= 1 Then
ReDim arr(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
Arg = WScript.Arguments(i)
If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
arr(i) = Arg
Next
RunCmd = Join(arr)
CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If
然后运行
wscript run.vbs cmd /C mkdir "C:\Temp\TmP"
和vuola!
答案 0 :(得分:3)
如果您无法控制流程的创建方式,那么您基本上就是该代码实施者的代表。 winapi CreateProcess确实运行* .bat和/或* .cmd文件,但是通过%ComSpec%/ c,通常是cmd.exe / c。但是,.bat文件在这里并不是很好。因为cmd会运行它们,这会打开一个控制台
以下是一些可能或可能不适合您的选项:
使用以下powershell命令
powershell -WindowStyle Minimized -NoLogo -NoProfile -NonInteractive -Command mkdir c:\your\path\tocreate > %temp%\scratch.txt
让脚本解释器运行以下文件:
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
' Create a new folder
oFSO.CreateFolder WScript.Arguments.Item(0)
您从以下命令开始:
wscript mkdirsil.vbs "c:\path\to\create" //NoLogo
// Nologo防止徽标显示:执行时不会显示横幅
编译以下隐藏其主窗口的C#Winforms程序。您需要部署可执行文件,我不知道这是否可行。
using System;
using System.Windows.Forms;
using System.IO;
namespace SilentMkDir
{
public class Program:Form
{
public Program(string dir)
{
this.SuspendLayout();
this.ClientSize = new System.Drawing.Size(0, 0);
this.ControlBox = false;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Text = "MakeDir";
this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
this.Load += (s, e) =>
{
try
{
Directory.CreateDirectory(dir);
}
catch (Exception all)
{
MessageBox.Show(all.Message);
}
this.Close();
};
this.ResumeLayout(false);
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] path)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Program(path[0]));
}
}
}
此命令行应为您生成* .exe,因为上面的代码位于mksil.cs
csc mksil.cs /r:System.IO.dll /r:System.Windows.dll
或者你可以在C / C ++中创建类似的东西。
安装Python可以做到
pyw -c "import os; os.mkdir(r'C:\Path\To\Dir')"
因为pyw.exe是一个GUI应用程序
您基本上是在寻找一个Windows GUi应用程序而不是控制台应用程序的exe。以下批处理命令扫描系统文件夹以查找此类可执行文件(将其放在一行上)但未找到任何可执行文件。 (注意这需要从命令行运行,从脚本文件使用%% a而不是%a。dumpbin
附带VC ++编译器
for %a in (%SystemRoot%\System32\*.exe) do
@(dumpbin /headers %a |
find "subsystem (Windows GUI)" > nul &&
echo %~nxa)
最初我希望start
可以工作,但@HarryJohnston指出它是cmd的内部命令,而不是exe。
start /B /min cmd /c mkdir
启动一个单独的窗口来运行指定的程序或命令。
但是使用/ B(没有新窗口)和/ MIN(最小化)你可能会使用它。