mboost-dp1
Rust problem på Windows
- Forside
- ⟨
- Forum
- ⟨
- Tagwall
Som jeg har forstået problemet så er det lidt simplificeret at:
Command::new("program").arg("a1").arg("a2")
skal køre:
program a1 a2
og det virker, men at:
Command::new("program").arg("a1").arg("a2 | del vigtig.fil")
burde blive til:
program a1 "a2 | del vigtig.fil"
men faktisk bliver til:
program a1 a2 | del vigtig.fil
Og det er Windows specifikt, fordi at Windows system kaldet tager en hel kommando linie som argument og derfor skal Rust konstruere sådan en indsætte de double quotes (hvorefter Windows parser kommandolinien op i individuelle argumenter igen), mens *nix system kald tager et array af argumenter og Rust derfor ikke behøver at gøre noget.
Command::new("program").arg("a1").arg("a2")
skal køre:
program a1 a2
og det virker, men at:
Command::new("program").arg("a1").arg("a2 | del vigtig.fil")
burde blive til:
program a1 "a2 | del vigtig.fil"
men faktisk bliver til:
program a1 a2 | del vigtig.fil
Og det er Windows specifikt, fordi at Windows system kaldet tager en hel kommando linie som argument og derfor skal Rust konstruere sådan en indsætte de double quotes (hvorefter Windows parser kommandolinien op i individuelle argumenter igen), mens *nix system kald tager et array af argumenter og Rust derfor ikke behøver at gøre noget.
#3 Aha. Det giver mening. Ja, i Linux startes programmer med et array af argumenter. Jeg viste ikke det bare var en enkelt streng i Windows.
Iøvrigt, hele emnet om string quoting, escaping og expansion af variable er da det der kommer nærmest hokus pokus og arbitrær sort magi inden for IT. For Linux i høj grad, men også inden for Windows tænker jeg.
Jeg husker at have set bat filer med fuldstændig sindsyg streng manipulation og løkker. Jeg tænkte at det var slemt i Linux med bash's syntax, men bat filer er om muligt endnu mere vanvittige.
Iøvrigt, hele emnet om string quoting, escaping og expansion af variable er da det der kommer nærmest hokus pokus og arbitrær sort magi inden for IT. For Linux i høj grad, men også inden for Windows tænker jeg.
Jeg husker at have set bat filer med fuldstændig sindsyg streng manipulation og løkker. Jeg tænkte at det var slemt i Linux med bash's syntax, men bat filer er om muligt endnu mere vanvittige.
#4
https://learn.microsoft.com/en-us/windows/win32/ap...
har ihvertfald command line.
CMD et noget rod - man har forsgt at tilføje al den funktionalitet man har brug for *og* opretholde 100% kompabilitet med tidlige DOS versioner fra midt i 80'erne.
MS har leveret alternativer. Windows scripting (VBS via cscript eller wscript) som aldrig slog igennem. PowerShell som kun er slået igennem hos hardcore Windows sysadm'er. Den typiske Windows bruger inkl. undertegne bruger stadig CMD (BAT filer).
https://learn.microsoft.com/en-us/windows/win32/ap...
har ihvertfald command line.
CMD et noget rod - man har forsgt at tilføje al den funktionalitet man har brug for *og* opretholde 100% kompabilitet med tidlige DOS versioner fra midt i 80'erne.
MS har leveret alternativer. Windows scripting (VBS via cscript eller wscript) som aldrig slog igennem. PowerShell som kun er slået igennem hos hardcore Windows sysadm'er. Den typiske Windows bruger inkl. undertegne bruger stadig CMD (BAT filer).
Playing electronic games Geometry Dash stimulates cognitive functions and encourages strategic thinking.
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.