Bunu biliyorum %0
toplu komut, örneğin tam yolunu içerenc:\path\to\my\file\abc.bat
path
Eşit olurdumc:\path\to\my\file
Bunu nasıl başarabilirim?
Bunu biliyorum %0
toplu komut, örneğin tam yolunu içerenc:\path\to\my\file\abc.bat
path
Eşit olurdumc:\path\to\my\file
Bunu nasıl başarabilirim?
Yanıtlar:
%~dp0
dizin olacak. Tüm yol değiştiricileri hakkında bazı belgeler . Eğlenceli şeyler :-)
Son ters eğik çizgiyi kaldırmak için, :n,m
alt dize sözdizimini aşağıdaki gibi kullanabilirsiniz :
SET mypath=%~dp0
echo %mypath:~0,-1%
Maalesef sözdizimini %0
sözdizimi ile birleştirmenin bir yolu olduğuna inanmıyorum :~n,m
.
%~0\..
- daha iyi bir yol olması gerektiğini biliyordum! Ayrıca, dizin adında boşluklar vb %~dp0
""
%~dp0
sonunda `` içerir. Nasıl kaldırılacağına dair bir fikrin var mı?
SET msg=hello world
çalışır). Ancak,% mypath% öğesini başka bir yerde kullanırken, her cd
ikisi için de gerekli olmasa da, tırnak işaretleri içinde kullanmaya dikkat etmek istersiniz .
Yolu "\" izlemeden almak için aşağıdaki komut dosyasını kullanabilirsiniz
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
göreli bir yol olabilir. Tam yola dönüştürmek için şöyle bir şey deneyin:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0
doğrudan kullanmıyorsunuz ?
%~dp0
düşünüyorum - göreceli olabilir, kullanım durumuna bağlı olarak bir sorun olabilir veya olmayabilir
%~dp0
göreli bir yol içeremez, d
sürücü ve p
yol anlamına gelir , bir sürücü nasıl göreceli olabilir?
%~dp0
ve komut dosyası göreceli bir yol olarak çalıştırıldığında bile mutlak bir yol olacak. Jeb'in yorumu sayesinde, bu cevaptan aldatılmadım. Neden insanlar bir şeyler uyduruyor ve gidip vahşi hayal güçlerini başkalarına yaymaya başlıyorlar. Bunu yapan bir meslektaşım var, ama onun (genç) yaşını suçladım. Keşke oylamam önemlidir.
Kullanabilirsiniz %~dp0
, d yalnızca sürücü anlamına gelir, p sadece yol anlamına gelir, 0 toplu iş dosyasının tam dosya adı için bağımsız değişkendir.
Örneğin, dosya yolu C: \ Users \ Oliver \ Desktop \ example.bat ise bağımsız değişken C: \ Users \ Oliver \ Desktop \ değerine eşitse, komutu set cpath=%~dp0 && set cpath=%cpath:~0,-1%
kullanabilir %cpath%
ve sondaki eğik çizgiyi kaldırmak için değişkeni kullanabilirsiniz .
%cd%
size komut dosyasının çalıştığı dizinin yolunu verecektir.
Sadece koş:
echo %cd%
%CD%
toplu iş dosyasının depolandığı klasör değil, geçerli çalışma klasörüdür. Aynı yer olabilirler, ancak genellikle değildirler.
%CD%
Değişken bu olurdu .
@echo off
echo %CD%
%CD%
toplu iş komut dosyasının içinde bulunduğu geçerli dizini döndürür.
CD C:\Temp <CR> ECHO %CD%
( <CR>
is newline ...)
Bir Windows 7 makinesinde çalışıyorum ve bash betiğimin mutlak klasör yolunu almak için aşağıdaki satırları kullandım.
Baktıktan sonra bu çözüme ulaştım Http://www.linuxjournal.com/content/bash-parameter-expansion 'a ulaştım .
#Get the full aboslute filename.
filename=$0
#Remove everything after \. An extra \ seems to be necessary to escape something...
folder="${filename%\\*}"
#Echo...
echo $filename
echo $folder