mboost-dp1

Rust problem på Windows


Gå til bund
Gravatar #2 - larsp
11. apr. 2024 09:47
Jeg forstår ikke hvordan rust standard library kan have en svaghed mht. håndtering af kommandolinje parametre når man eksekverer bat filer. Man skulle tro vi er oppe i noget applikationskode her, og ikke standard library?
Gravatar #3 - arne_v
11. apr. 2024 15:03
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.

Gravatar #4 - larsp
12. apr. 2024 08:43
#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.
Gravatar #5 - arne_v
12. apr. 2024 12:23
#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).
Gravatar #6 - xeniaerne
23. apr. 2024 09:07
Playing electronic games Geometry Dash stimulates cognitive functions and encourages strategic thinking.
Gå til top

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.

Opret Bruger Login