Aqui está um one-liner que faz o que você quer, usando for /r
como você sugere.
Se você colocá-lo em um arquivo de lote, deverá alterar %d
para %%d
nos dois locais.
for /r %d in (dummyfilename.txt) do echo dummy content > "%d"
Eu quero copiar um arquivo de texto fictício para cada subdiretório de um determinado diretório em uma unidade de rede (Windows). Como estamos analisando centenas ou milhares de subdiretórios, não posso fazer isso manualmente, mas posso criar uma lista de diretórios relevantes. Essa lista pode ser passada para um arquivo em lotes ou similar.
Eu estou supondo que o arquivo de lote teria algum tipo de loop FOR que pega uma linha da lista de diretórios como contador. Para cada iteração, o loop apenas criaria um arquivo vazio no diretório indicado pelo contador, mas falta-me habilidades de codificação para criar o arquivo de lote apropriado.
Como abordo melhor este problema?
Atualização:
c:\help for
inclui uma opção /R
que parece útil:
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
Walks the directory tree rooted at [drive:]path, executing the FOR statement in each directory of the tree. If no directory specification is specified after /R then the current directory is assumed. If set is just a single period (.) character then it will just enumerate the directory tree.
Isso parece simples, mas preciso ler uma linha da lista de diretórios:
for %? in (.) do echo %? > dumy_file.txt
Detalhes: Minha equipe tem uma unidade de rede compartilhada com milhares de subpastas preenchidas com documentação obsoleta e documentos de trabalho antigos; é uma bagunça. O plano é criar uma nova estrutura de árvore em outro lugar (feito) que reflita nosso conceito de arquivo futuro e, em seguida, mova ou exclua os arquivos na estrutura de árvore antiga. Para rastrear quais subdiretórios já foram "migrados", pensamos que seria conveniente ter um marcador de "fazer" na forma de um arquivo fictício que pode ser pesquisado.