Eu preciso do caminho para a pasta que contém o arquivo cmd. Com% 0, posso obter o nome do arquivo. Mas como obter o nome da pasta?
c: \ temp \ test.cmd >> teste.cmd
PS Meu diretório atual! = Pasta do script.
Para o nome da pasta e unidade, você pode usar:
echo %~dp0
Você pode obter muito mais informações usando diferentes modificadores:
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
The modifiers can be combined to get compound results:
%~dpI - expands %I to a drive letter and path only
%~nxI - expands %I to a file name and extension only
%~fsI - expands %I to a full path name with short names only
Esta é uma pasta de cópia do "for /?" comando no prompt. Espero que ajude.
As 10 principais dicas de lote do DOS (Sim, lote do DOS ...) mostram batchparams.bat (link para a origem como uma essência):
C:\Temp>batchparams.bat c:\windows\notepad.exe
%~1 = c:\windows\notepad.exe
%~f1 = c:\WINDOWS\NOTEPAD.EXE
%~d1 = c:
%~p1 = \WINDOWS\
%~n1 = NOTEPAD
%~x1 = .EXE
%~s1 = c:\WINDOWS\NOTEPAD.EXE
%~a1 = --a------
%~t1 = 08/25/2005 01:50 AM
%~z1 = 17920
%~$PATHATH:1 =
%~dp1 = c:\WINDOWS\
%~nx1 = NOTEPAD.EXE
%~dp$PATH:1 = c:\WINDOWS\
%~ftza1 = --a------ 08/25/2005 01:50 AM 17920 c:\WINDOWS\NOTEPAD.EXE
cd /d "%~dp0"
(de stackoverflow.com/questions/4451668 )A resposta aceita é útil, mas não é imediatamente óbvio como recuperar um nome de arquivo de um caminho se você NÃO estiver usando valores passados. Consegui resolver isso a partir deste tópico, mas, caso outros não tenham a mesma sorte, eis como isso é feito:
Agora, a
:file_name_from_path
função pode ser usada em qualquer lugar para recuperar o valor, não apenas para argumentos passados. Isso pode ser extremamente útil se os argumentos puderem ser transmitidos para o arquivo em uma ordem indeterminada ou se o caminho não for transmitido para o arquivo.fonte
%~dp1
para unidade e caminho."
s em torno de!myPath!
se o caminho tiver espaços (ou ter as aspas ser parte de myPath)Para atribuí-los a variáveis, certifique-se de não adicionar espaços à frente ou depois do sinal de igual:
Então você não deve ter problemas.
fonte
Caso alguém queira um método alternativo ...
Se este for o último subdiretório no caminho, você poderá usar esta linha única:
Isso retornaria o seguinte:
O .... retorna ao diretório anterior. / ad mostra apenas diretórios / b é uma listagem de formato simples e inclui todos os subdiretórios. Isso é usado para obter o caminho completo do diretório para impressão.
fonte
Eu tive o mesmo problema no meu loop, onde eu queria extrair arquivos zip no mesmo diretório e excluir o arquivo zip. O problema era que o 7z requer a pasta de saída, então tive que obter o caminho da pasta de cada arquivo. Aqui está a minha solução:
%% i era o caminho completo do nome do arquivo e% ii \ .. simplesmente retorna a pasta pai.
espero que ajude.
fonte
Caso a resposta aceita por Wadih não funcione para você, tente
echo %CD%
fonte
Isso foi montado com algum exemplo editado cmd
fonte