March 21, 2018 Calling Windows Command | ||||
---|---|---|---|---|
| ||||
Hi All, Request your help in calling the windows command to delete all file and folders recursively as the D function rmdirRecurse does not delete file in the permission of the file is readonly in windows 2008 R2 import std.process: execute; import std.array: empty; auto RemoveDir () ( auto dFiles = "C:\\Temp\Test1"; auto Step = "run"; if (Step == "run" && !dFiles.empty) { version(Windows) { foreach(d; dFiles) { execute(["rmdir.exe","-command", "/S /Q", `~d~`]); } } } return dFiles; ) void main () { writeln(RemoveDir); } From, Vino.N |
March 22, 2018 Re: Calling Windows Command | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vino | On Wednesday, 21 March 2018 at 18:50:38 UTC, Vino wrote: > Hi All, > > Request your help in calling the windows command to delete all file and folders recursively as the D function rmdirRecurse does not delete file in the permission of the file is readonly in windows 2008 R2 > > import std.process: execute; > import std.array: empty; > auto RemoveDir () ( > auto dFiles = "C:\\Temp\Test1"; > auto Step = "run"; > if (Step == "run" && !dFiles.empty) { > version(Windows) > { > foreach(d; dFiles) { > execute(["rmdir.exe","-command", "/S /Q", `~d~`]); } } } return dFiles; > ) > > void main () { > writeln(RemoveDir); > } > > From, > Vino.N It is faster if you use SHFileOperationW directly on Windows (and also it will ignore readonly attributes): https://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx //not tested void winrmdir(string path) { import core.sys.windows.shellapi; import std.exception : enforce; import std.file: FileException; import std.utf: toUTF16; auto shpath = (path ~ "\0\0").toUTF16(); SHFILEOPSTRUCTW s; s.wFunc = FO_DELETE; s.pFrom = shpath.ptr; s.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI; enforce!FileException(SHFileOperationW(&s) == 0 && !s.fAnyOperationsAborted); } |
Copyright © 1999-2021 by the D Language Foundation