O que você usa quando deseja atualizar o campo com data modificada de um arquivo no Windows?
- comandos acessíveis via C ++, .NET, C # ou algo nativo do Windows (Vista de preferência)
- ferramentas / aplicativos preferencialmente gratuitos e, se possível, de código aberto
Edit: já existe uma página para aplicativos, como apontado pelo CheapScotsman aqui .
Se alguém souber como eu posso fazer isso via C ++, C #, WSH ou algo semelhante, muito bem, acho que todo o resto é abordado na questão vinculada.
windows
file-attributes
touch
facepalmd
fonte
fonte
REM.>a
Respostas:
Se você deseja tocar no carimbo de data de um arquivo usando o Windows, use o seguinte comando no prompt de comando:
(onde
filename.ext
está o nome do seu arquivo). A+,,
é uma bandeira especial paracopy
contá-la simplesmente atualizar a data / hora no arquivo :Edite com base nos comentários de Lumi e Justin: coloque isso em um arquivo em lotes, por exemplo. touch.cmd
Isso funciona mesmo que o arquivo não esteja no diretório atual (testado no Windows 7).
fonte
copy
: technet.microsoft.com/en-us/library/bb490886.aspxtype touch.bat
is@echo off
e next linecopy /b %1 +,,
- coloque-oC:\bin
ou o que você tem para seus próprios scripts, e então você pode usá-lo comotouch myfile.txt
.copy /b Source+,, Source
- ondeSource
inclui o caminho completo para o arquivoEu usei e recomendo unxutils, que são portas nativas do Win32, com muitos utilitários Unix comuns. Há um
touch
comando lá.fonte
"test тест τεστ.txt"
touch
comando. É como qualquer outra coisa nos ambientes nix, você pode fazê-lo ou sudo-lo ou não, porque não tem privilégios.Se tudo o que você deseja é alterar a data da última modificação do arquivo (que foi o meu caso):
fonte
gci -recu -inc "*.*" | % { $_.LastWriteTime = Get-Date }
file
se não existir.cmd
embutidos.ATUALIZAR
Gah! Isso não funciona em arquivos somente leitura, ao contrário
touch
. Eu sugiro:fonte
filename +,,
sintaxe estranha .@ traço-tom-bang:
Aqui está a explicação de Technet sobre o misterioso '+' e vírgulas:
O comando copy suporta a mesclagem de vários arquivos em um único arquivo de destino. Como um destino em branco não pode ser especificado usando um caractere de espaço no prompt de comando, duas vírgulas podem ser usadas para indicar isso.
E esta é a referência de comando de cópia da Technet: http://technet.microsoft.com/en-us/library/bb490886.aspx
fonte
Se você sentir como codificação-lo sozinho, .NET oferece os
File.SetLastAccessTime
,File.SetCreationTime
eFile.SetLastWriteTime
métodos.fonte
aqui está uma versão recursiva usando o powershell ... isso altera a hora da última modificação de todos os arquivos e subdiretórios e arquivos dentro dos subdiretórios deste diretório
fonte
ls * -recurse | % { $_.LastWriteTime = Get-Date }
O projeto GnuWin32 possui portas Windows das versões Gnu dos utilitários de linha de comando Unix.
Ele vem como um número de pacotes separados e você pode instalar apenas os comandos necessários, sem outras dependências. Pois
touch
você precisaria do pacote CoreUtils .fonte
cygwin
vem comtouch
. Eu sei que você mencionou que não deseja instalar uma estrutura inteira, mas o cygwin é bastante leve e pode ser chamado na janela de comando dos sem que toda a linha de comando do tipo unix esteja ativada.Você também pode controlar quais ferramentas instalar, para simplesmente instalar o
touch.exe
arquivo e deixar o restante da estrutura.fonte
Eu tentei isso para criar um arquivo vazio no meu script em lotes. Você pode usar isto:
fonte
echo pie>.gitignore
trabalhou bem - obrigado!.gitignore.
e quando você pressiona enter, o Windows remove o período final. Louco, mas funciona.Aqui está um regfile simples que escrevi para adicionar o botão direito do mouse em "touch" no Windows Explorer . Também seria fácil criar um script, já que apenas chama:
fonte
copy nul some_file
de criar um arquivo vazio (que é o que eu vejotouch
mais usado).Portas win32 nativas de muitos comandos unix , incluindo touch.
Eu o usei antes e funciona bem - sem instalação, sem DLLs, etc
fonte
Experimente este no CodeProject .
fonte
Você também pode instalar o Cygwin, que oferece o Touch, além de vários outros comandos * NIX.
fonte
Existem portas Windows de muitos utilitários Unix. Dê uma olhada nos projetos unxutils ou GnuWin32 .
fonte
De uma pergunta semelhante no estouro de pilha.
Para atualizar os carimbos de data / hora (ignorando a outra funcionalidade de
touch
), eu usaria:fonte
Que tal o codeproject "Touch for Windows": http://www.codeproject.com/KB/applications/touch_win.aspx
editar; Mesma pergunta que aqui: https://stackoverflow.com/questions/51435/windows-version-of-the-unix-touch-command/51439
fonte
a partir do site:
fonte
Este conteúdo pode ser salvo em um arquivo reg. Isso adicionará um menu de contexto com o botão direito do mouse para todos os arquivos com a capacidade "Touch File" (testada no Windows 7). Copie todas as seguintes linhas para o arquivo reg. Execute o arquivo e aprove a pergunta. Clique com o botão direito do mouse em qualquer arquivo (ou vários arquivos) - a opção "Touch File" já está disponível.
fonte
Se você estiver usando o git para um ou mais projetos, o mingw baseado
git-bash
no Windows possui otouch
comando Quero agradecer ao @ greg-hewgill por me indicar que os nix utilitários existem para o Windows, porque foi isso que me levou à ideia de tentar tocar no git-bash.fonte
no PowerShell tente:
NI
é um alias do cmdlet New-Item .fonte
ni
comando e talvez descreva mais o que o comando faz?New-Item
cmdlet não pode ser usado para atualizar o registro de data e hora de um arquivo existente.Salve o seguinte como touch.bat na sua pasta% windir% \ system32 ou adicione a pasta na qual ele é salvo à sua variável de ambiente PATH:
Uso da amostra:
Referência: Microsoft KB 69581
fonte
Encontrei uma maneira rápida de fazer isso se você tiver o vim instalado (não é bom para arquivos grandes, abrirá o arquivo inteiro e depois fechá-lo ...)
O "+" define o argumento para executar os seguintes comandos. "wq!" é "escrever, sair, forçar". Isso abrirá o arquivo, salve-o e feche-o imediatamente depois.
fonte
Eu queria que o recurso 'toque' de clonar / duplicar as datas do arquivo de outro arquivo, nativamente, e fosse utilizável a partir de um arquivo em lotes.
Então, 'arraste e solte' o arquivo de vídeo no arquivo em lotes, o FFMPEG é executado e, em seguida, 'Data de criação' e 'Data de modificação' do arquivo de entrada são copiados para o arquivo de saída.
Isso pareceu simples no começo, até você achar que os arquivos em lotes são terríveis ao lidar com nomes de arquivos unicode, o PowerShell em linha mexe com os símbolos dos nomes dos arquivos e a fuga dupla deles é um pesadelo.
Minha solução foi transformar a parte 'touch' em um script separado do PowerShell, que chamei de 'CLONE-FILE-DATE.ps1' e contém:
Aqui está um exemplo de uso no meu arquivo em lotes 'CONVERT.BAT':
Eu acho que o PowerShell é legível, então apenas explicarei o discurso do lote:
% ~ dp0 é o diretório atual do arquivo em lotes.
% ~ 1 é o caminho do arquivo solto no lote sem aspas.
CHCP 65001> nul define caracteres para UTF-8 e engole a saída.
-ExecutionPolicy ByPass permite executar o PowerShell sem a necessidade de modificar a política global, que existe para impedir que as pessoas executem scripts acidentalmente.
fonte
Experimentar
arquivo fsutil createnew new.txt 0
fonte
The FSUTIL utility requires that you have administrative privileges.
- e não se comporta comotouch
nos arquivos existentes.As cinco alternativas mencionadas acima, mais três não mencionadas aqui, podem ser encontradas no SuperUser: "Comando de toque recursivo do Windows"
fonte
Isso não está relacionado à questão original, mas acho isso muito útil no Windows devido à GUI.
Estou usando o utilitário TouchPro, que fornece uma GUI (construída no shell do explorer):
http://www.jddesign.co.uk/products/touchpro/touchpro.htm
fonte
Bem, se você realmente deseja ter o
touch
comando disponível, pode colocá-lo em um arquivo em lotes chamadotouch.bat
e colá-loC:\Windows
:Simples o suficiente.
fonte
O pessoal do Unix corrigiu o problema geral de atualizar a data de qualquer arquivo com o comando touch . No entanto, para Windows, às vezes é possível um método mais simples para casos especiais.
Preciso atualizar o carimbo de data e hora de um atalho do aplicativo no Windows 8.1 para tornar visíveis as alterações na cor de segundo plano do Ladrilho do Aplicativo. Consulte esta pergunta do SO . Em vez de implementar uma das ferramentas inteligentes acima, acho mais fácil editar o campo de comentário do atalho. A maioria das pessoas deixa isso vazio, mas é claro que um comentário útil é rapidamente concebido. E se houver um comentário, adicionar ou remover um período final nunca será prejudicial.
fonte
Compreendo que esta seja uma pergunta antiga, acabei de descobrir o toque no meu sistema Windows 10. Eu baixei e instalei o Git daqui (acho) e parece que o touch e vários outros utilitários estão na pasta bin.
fonte