www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Calling Windows Command

reply Vino <vino.bheeman hotmail.com> writes:
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
Mar 21 2018
parent rumbu <rumbu rumbu.ro> writes:
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); }
Mar 21 2018