equivalente a rm e mv no windows .cmd

96

Eu tenho o seguinte em um script de shell, quero converter as seguintes linhas em um arquivo cmd do windows ... qualquer pessoa pode fornecer entradas sobre o que é equivalente para "rm" e "mv" no arquivo cmd do windows.

rm -f ${BUILD_ID}/${BUILD_ASIC}*rampatch*
mv ${BUILD_ID}/${BUILD_ASIC}*rampatch* ${BUILD_ID}/emul/
user2341103
fonte
9
dele move.
Blorgbeard é lançado em

Respostas:

144

move no windows é equivalente a mvcomando no Linux

delno Windows é equivalente ao rmcomando no Linux

Jainendra
fonte
24
Esta é uma simplificação exagerada. O comportamento e as capacidades são bastante diferentes.
StephenBoesch
Para uma combinação quase perfeita de comportamento e recursos, use a sugestão de @Dave para usar portas Win32 das ferramentas Linux. Também gosto do GnuWin32 que foi sugerido, embora geralmente apenas adicione os bindiretórios do Cygwin ou Git bash / git para Windows ao meu Windows PATH. Se você deseja usar o CMD puro , pode obter um comportamento e recursos mais próximos usando as sugestões que compartilhei em minha resposta a seguir.
bballdave025
34

move e del SÃO certamente os equivalentes, mas do ponto de vista da funcionalidade, infelizmente, NÃO são equivalentes. Por exemplo, você não pode mover arquivos E pastas (em um cenário de curinga) com o movecomando. E a mesma coisa se aplica com del.

A solução preferida, na minha opinião, é usar as portas Win32 das ferramentas do Linux, a melhor coleção das quais encontrei aqui .

mve rmestão no pacote CoreUtils e funcionam perfeitamente!

Dave
fonte
17

Se você quiser ver uma discussão mais detalhada das diferenças para os comandos, consulte os Detalhes sobre as diferenças seção abaixo.

Do LeMoDa.net website 1 ( arquivado ), especificamente o equivalente de linha de comando do Windows e Unix página ( arquivado ), eu encontrei o seguinte 2 . Há uma tabela melhor / mais completa na próxima edição.

Windows command     Unix command
rmdir               rmdir
rmdir /s            rm -r
move                mv

Estou interessado em ouvir @Dave e @javadba para saber como os comandos são equivalentes - como o " comportamento e capacidades " se comparam, se bastante semelhantes ou " lamentavelmente NÃO equivalentes ".

Tudo o que descobri foi que quando o usei para tentar remover recursivamente um diretório e seus arquivos e subdiretórios constituintes, por exemplo,

(Windows cmd)>rmdir /s C:\my\dirwithsubdirs\

me deu uma mensagem e um prompt padrão do Windows-sabe-melhor-do-que-você-tem-certeza

dirwithsubdirs, Are you sure (Y/N)?

e que, quando digitei Y, o resultado foi que meu diretório principal e seus arquivos e subdiretórios constituintes foram embora.


Editar

Estou olhando para isso depois de encontrar essa resposta . Tentei novamente cada um dos comandos e mudaria um pouco a tabela.

Windows command     Unix command
rmdir               rmdir
rmdir /s /q         rm -r
rmdir /s /q         rm -rf
rmdir /s            rm -ri
move                mv
del <file>          rm <file>

Se você quiser o equivalente para

rm -rf

você pode usar

rmdir /s /q

ou, como o autor da resposta que obtive descrito,

Mas existe uma outra maneira "antiga" de fazer isso, que era usada no tempo em que os comandos não tinham opções para suprimir as mensagens de confirmação. Simplesmente ECHOa resposta necessária e canalize o valor para o comando.

echo y | rmdir /s


Detalhes sobre diferenças

Testei cada um dos comandos usando o Windows CMD e Cygwin (com seu bash).

Antes de cada teste, fiz a seguinte configuração.

CMD do Windows

>mkdir this_directory
>echo some text stuff > this_directory/some.txt
>mkdir this_empty_directory

Cygwin bash

$ mkdir this_directory
$ echo "some text stuff" > this_directory/some.txt
$ mkdir this_empty_directory

Isso resultou na seguinte estrutura de arquivo para ambos.

base
|-- this_directory
|   `-- some.txt
`-- this_empty_directory

Aqui estão os resultados. Observe que não marcarei cada um como CMD ou bash; o CMD terá um >na frente e o bashterá um $ na frente.

RMDIR

>rmdir this_directory
The directory is not empty.

>tree /a /f .
Folder PATH listing for volume Windows
Volume serial number is ████████ ████:████
base
+---this_directory
|       some.txt
|
\---this_empty_directory

> rmdir this_empty_directory

>tree /a /f .
base
\---this_directory
        some.txt
$ rmdir this_directory
rmdir: failed to remove 'this_directory': Directory not empty

$ tree --charset=ascii
base
|-- this_directory
|   `-- some.txt
`-- this_empty_directory

2 directories, 1 file

$ rmdir this_empty_directory

$ tree --charset=ascii
base
`-- this_directory
    `-- some.txt

RMDIR /S /Q and RM -R ; RM -RF

>rmdir /s /q this_directory

>tree /a /f
base
\---this_empty_directory

>rmdir /s /q this_empty_directory

>tree /a /f
base
No subfolders exist
$ rm -r this_directory

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -r this_empty_directory

$ tree --charset=ascii
base
0 directories, 0 files
$ rm -rf this_directory

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -rf this_empty_directory

$ tree --charset=ascii
base
0 directories, 0 files

RMDIR /S AND RM -RI Aqui, temos uma pequena diferença, mas eles são bem parecidos.

>rmdir /s this_directory
this_directory, Are you sure (Y/N)? y

>tree /a /f
base
\---this_empty_directory

>rmdir /s this_empty_directory
this_empty_directory, Are you sure (Y/N)? y

>tree /a /f
base
No subfolders exist
$ rm -ri this_directory
rm: descend into directory 'this_directory'? y
rm: remove regular file 'this_directory/some.txt'? y
rm: remove directory 'this_directory'? y

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -ri this_empty_directory
rm: remove directory 'this_empty_directory'? y

$ tree --charset=ascii
base
0 directories, 0 files

I'M HOPING TO GET A MORE THOROUGH MOVE AND MV TEST


Notas

  1. Não sei quase nada sobre o site da LeMoDa, exceto o fato de que a informação é

Copyright © Ben Bullock 2009-2018 . Todos os direitos reservados.

( aviso de direitos autorais arquivado )

e que parece haver um monte de dicas úteis de programação junto com um pouco de humor (sim, a grafia britânica) e informações sobre como consertar banheiros japoneses. Também encontrei algumas coisas falando sobre o "Relatório Ibaraki", mas não sei se isso é o site.

Acho que irei lá com mais frequência; é bastante útil. Acessórios para Ben Bullock, cujo e-mail está em sua página. Se ele quiser que eu remova essa informação, eu o farei.

Incluirei a isenção de responsabilidade ( arquivada ) do site:

Isenção de responsabilidade Leia a seguinte isenção de responsabilidade antes de usar qualquer código de programa de computador neste site.

Não há garantia para o programa, na medida permitida pela legislação aplicável. Exceto quando de outra forma declarado por escrito, os detentores dos direitos autorais e / ou outras partes fornecem o programa "no estado em que se encontra", sem garantia de qualquer tipo, expressa ou implícita, incluindo, mas não se limitando a, garantias implícitas de comercialização e adequação a uma finalidade específica . Todo o risco quanto à qualidade e desempenho do programa é de sua responsabilidade. Se o programa apresentar defeito, você assumirá o custo de todos os serviços, reparos ou correções necessários.

Em nenhum caso, a menos que exigido pela lei aplicável ou acordado por escrito, qualquer detentor de direitos autorais, ou qualquer outra parte que modifique e / ou transmita o programa conforme permitido acima, será responsável por danos, incluindo quaisquer danos gerais, especiais, incidentais ou conseqüenciais Danos decorrentes do uso ou incapacidade de usar o programa (incluindo, mas não se limitando a perda de dados ou dados sendo fornecidos imprecisos ou perdas sofridas por você ou por terceiros ou falha do programa em operar com quaisquer outros programas), mesmo que Esse titular ou outra parte foi avisada da possibilidade de tais danos.


  1. Na verdade, encontrei as informações com uma pesquisa no Google por "cmd equivalente de rm"

https://www.google.com/search?q=cmd+equivalent+of+rm

A informação que estou compartilhando veio primeiro.

bballdave025
fonte
1
Observe que você deve "/" não este: "\" rmdirpara excluir pastas delde arquivos
JillAndMe