java - ulige .bat filadfærd

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en flagermusfil med følgende indhold:


set logfile=  D:log.txt

java com.stuff.MyClass \%1 \%2 \%3  >> \%logfile\%


når jeg kører flagermusfilen dog får jeg følgende:


C:>set logfile= D:log.txt

C:>java com.stuff.MyClass <val of \%1> <val of \%2> <val of \%3>   1>>D:log.txt
The parameter is incorrect.


Jeg er næsten positiv 'Parameteren er forkert.' Skyldes den fremmede 1 derinde. Jeg tror også, at dette kan have noget med kodningen af ​​.bat-filen, men jeg kan ikke helt finde ud af, hvad der forårsager det . Nogen nogensinde løber ind i dette før eller ved hvad der kan forårsage det, og hvordan man løser det?


Rediger


Og lektionen, som altid, er at kontrollere, om den er tilsluttet først, før du går og spørger om hjælp. Batfilen, i versionskontrol, bruger D: \ log.txt, fordi den er beregnet til at blive kørt fra serveren, der indeholder et D-drev. Når jeg tester mine ændringer og kører lokalt på min computer, der ikke har et D-drev, undlod jeg at gøre ændringen til at bruge C: \ log.txt, hvilket er årsagen til fejlen. Undskyld at spilde dig tid, tak for Hjælp, prøv at modstå trangen til at nedvurdere mig for meget.

Bedste reference


Dette kan virke som et dumt spørgsmål, men er der et eksisterende D: drev i den sammenhæng, som flagermusfilen kører i?


Når jeg først havde en sag, hvor en flagermusfil blev brugt som kommandolinjen i en opgave i task manager, men Run As-brugeren blev sat til en lokal bruger på boksen, gav jeg ikke adgang til netværksdrev.


Interpoleret for din sag, hvis D: drevet var et netværksdrev, kørte batfilen som den lokale administratorkonto på den pågældende maskine i stedet for en domænebrugerkonto sandsynligvis ikke få adgang til D :.

Andre referencer 1


Jeg tvivler på, at det er problemet - jeg forventer, at kommandoprocessoren skal håndtere den del for dig.


Her er bevis på det, der virker for mig:


Test.java:


public class Test
{
    public static void main(String args[]) throws Exception
    {
        System.out.println(args.length);
        for (String arg : args)
        {
            System.out.println(arg);
        }
    }
}


test.bat:


set logfile= c:usersjon	est	est.log
java Test \%1 \%2 \%3 >> \%logfile\%


På kommandolinjen:


c:UsersJonTest> [User input] test.bat first second third

c:UsersJonTest>set logfile= c:usersjon	est	est.log

c:UsersJonTest>java Test first second third  1>>c:usersjon	est	est.log

c:UsersJonTest> [User input] type test.log
3
first
second
third

Andre referencer 2


den 1 er ikke fremmed: den er indsat af cmd.exe, der betyder stdout (i stedet for '>>' kan du også skrive '1 >>' i kontrast til omdirigering af stderr: '2 >>'). så problemet skal være med dine parametre.