Bunu biliyorum %0toplu komut, örneğin tam yolunu içerenc:\path\to\my\file\abc.bat
pathEşit olurdumc:\path\to\my\file
Bunu nasıl başarabilirim?
Bunu biliyorum %0toplu komut, örneğin tam yolunu içerenc:\path\to\my\file\abc.bat
pathEşit olurdumc:\path\to\my\file
Bunu nasıl başarabilirim?
Yanıtlar:
%~dp0dizin olacak. Tüm yol değiştiricileri hakkında bazı belgeler . Eğlenceli şeyler :-)
Son ters eğik çizgiyi kaldırmak için, :n,malt dize sözdizimini aşağıdaki gibi kullanabilirsiniz :
SET mypath=%~dp0
echo %mypath:~0,-1%
Maalesef sözdizimini %0sö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""
%~dp0sonunda `` 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 cdikisi 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"
%~dp0göreli bir yol olabilir. Tam yola dönüştürmek için şöyle bir şey deneyin:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0doğrudan kullanmıyorsunuz ?
%~dp0düşünüyorum - göreceli olabilir, kullanım durumuna bağlı olarak bir sorun olabilir veya olmayabilir
%~dp0göreli bir yol içeremez, dsürücü ve pyol anlamına gelir , bir sürücü nasıl göreceli olabilir?
%~dp0ve 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