Det finns flera sätt att kopiera filer från samma katalog som själva batchfilen. Här är några exempel som visar olika scenarier och robusthet:
Metod 1:Använda `%~ dp0` (enklaste och mest rekommenderad)
Denna metod använder variabeln "%~ dp0", som expanderar till enheten och sökvägen för den aktuella batchfilen. Detta är den mest pålitliga och rekommenderade metoden.
`` `Batch
@Cho Off
kopiera "%~ dp0myfile.txt" "%~ dp0destinationFolder \ myFile.txt"
`` `
* `%~ dp0`:Hämtar enheten och sökvägen för batchfilen.
* `myFile.txt`:filen du vill kopiera. Byt ut detta med ditt faktiska filnamn.
* `DestinationFolder`:Namnet på mappen där du vill kopiera filen. Skapa den här mappen i förväg om den inte finns. Du kan också använda absoluta vägar här om det behövs.
Metod 2:Använda `CD '(mindre robust)
Denna metod ändrar katalogen till platsen för batchfilen innan kopian utför. Det är mindre robust eftersom det förlitar sig på att den aktuella arbetskatalogen är korrekt inställd.
`` `Batch
@Cho Off
pushd "%~ dp0"
Kopiera MyFile.txt DestinationFolder \ MyFile.txt
popd
`` `
* `pushd"%~ dp0 "`:Ändrar katalogen till batchfilens plats. `Pushd` sparar den aktuella katalogen, så att du kan återställa den senare.
* `Popd`:Återställer den ursprungliga katalogen.
Metod 3:Hantering av utrymmen i filvägar (avgörande för robusthet)
Om dina filnamn eller mappvägar innehåller utrymmen måste du * citera dem. Exemplen ovan gör redan detta, men det är värt att betona. Underlåtenhet att citera kommer att leda till fel.
Exempel med mellanslag:
`` `Batch
@Cho Off
kopiera "%~ dp0my fil.txt" "%~ dp0destination mapp \ my file.txt"
`` `
Metod 4:Kopiera flera filer med jokertecken
Du kan använda jokertecken för att kopiera flera filer på en gång:
`` `Batch
@Cho Off
kopiera "%~ dp0*.txt" "%~ dp0DestinationFolder \"
`` `
Detta kopierar alla ".txt" -filer från batchfilens katalog till "DestinationFolder".
felhantering (viktigt)
För mer robusta skript, lägg till felhantering för att kontrollera om kopian var framgångsrik:
`` `Batch
@Cho Off
kopiera "%~ dp0myfile.txt" "%~ dp0DestinationFolder \ myFile.txt"> nul 2> &1
Om % felVel % ==0 (
Echo -fil kopierades framgångsrikt.
) annars (
Echo -felkopieringsfil. Felkod:%ERRORLEVEL %
)
`` `
* `> nul 2> &1`:undertrycker utgången från kommandot` copy '.
* `IF % ERRORLEVEL % ==0`:Kontrollerar felnivån. `0` betyder framgång.
Kom ihåg att ersätta `" myfile.txt "`, `" DestinationFolder "` och andra platshållare med dina faktiska fil- och mappnamn. Testa alltid dina batchfiler noggrant. Felaktigt hantering av utrymmen i filnamn och sökvägar är en vanlig källa till fel.