Ottenere un elenco di file da una directory specifica


2

Mille grazie per l'aiuto ma ...

Utilizzando Windows 7 x64 eseguendo il comando da un file batch in una cartella specifica

Uso molti compressori della riga di comando paq8 / paq9 per eseguire il backup dei miei file. Di questi, molti non sono in grado di leggere le strutture di directory, quindi i nomi dei singoli file devono essere inseriti in una particolare sintassi a riga singola. Posso ottenere un elenco di file da un file di testo da una directory specifica, ma sono naturalmente in single. Devo creare un file di testo che fornisca i contenuti, ma tutto in 1 riga separata da uno spazio. Il mio batch è qui:

dir / a / b / -p / o: gen>% USERPROFILE% \ Desktop \ file_list_full.txt

Voglio essere in grado di inserire questa riga in un file batch in QUALSIASI cartella ed eseguirlo per creare un elenco di testo del contenuto della cartella

Ad esempio, questo darà:

Hello.exe

Help.txt

Big.png

sound.ogg

Ho bisogno che sia:

Hello.exe Help.txt Big.png sound.ogg

Esempio di struttura di compressione paq e perché questo deve essere fatto specialmente quando si possono avere duecento file in una cartella !!

paq9a a Archive.paq9a -8 -c feasting.exe License.txt INFO.txt data.win D3DX9_43.dll data.big dbr.ut

Come posso fare questo?

Se lascio il file di testo per creare così com'è. C'è un modo quindi di sostituire la "nuova linea" con uno "spazio" per ottenere il risultato richiesto?


questo può essere d'aiuto: superuser.com/questions/460598/… Mind cmd line
limit limit

Risposte:


2

Penso che potresti volere un output di grande formato, prova /w

Questa opzione è incompatibile con /Bquindi usa findstr per filtrare intestazioni e riassunti.

 C:> dir /a-d /w | findstr /B [a-zA-Z0-9]
 Big.png     Hello.exe   Help.txt    sound.ogg

Avvertenza: sopra testato su Win7. Sembra che tu abbia un O / S diverso.


Se hai molti requisiti difficili, potrebbe essere necessario far emergere il grande martello. Mi piace Perl ma il tuo chilometraggio può variare.

C:> perl -e "print join ' ', glob('*')"
Big.png Hello.exe Help.txt sound.ogg

0

dir / a / b / -p / o: gen>% USERPROFILE% \ Desktop \ file_list_full.txt / w

per "largo"

Se sei un fanatico dello spazio, vale a dire un vero valore ANSI / Ascii, inoltrerei il comando tramite GSAR con un comando find / sostituisci.

Ripristina il parametro predefinito della finestra cmd su un valore empio come "9999" per l'intero sistema o le istruzioni particolari e otterrai il ritorno a linea lunga senza wrapping.

Dovresti rispondere se lo spazio è assolutamente necessario e con il valore del codice carattere, è un dettaglio nitido e puoi condividere maggiori dettagli su dove pensi di riutilizzare l'output poiché potrebbe darci le informazioni necessarie.


Per favore, elabora se puoi ??? Grazie!!
Steve Robathan,

0

Un'alternativa alla linea cmd "pura" (che potresti trovare utile se hai bisogno di elenchi "ad hoc"):
Win Explorer consente di rilasciare più selezioni su un'app, in particolare un file batch.

Esempio semplice: crea un file batch con il seguente contenuto:

@echo off
echo %*
pause

quindi apri la finestra di Explorer in modo da renderla visibile e rilascia su di essa più file selezionati. Li elencherà semplicemente (e si fermerà in modo da poterlo leggere), ma aggiungi il reindirizzamento e avrai il tuo elenco salvato su file, o sostituirà l'eco con il comando del compressore e verrà eseguito su un elenco.

aggiornamento: per ottenere solo nomi di file

@echo off
setlocal

:loop
  if [%1]==[] goto end
  set arg=%arg% "%~nx1"
  shift
  goto loop

:end
echo %arg%
pause

Ancora limitato dalla lunghezza massima del cmd (8192) come indicato nella mia risposta collegata


Ho provato questo, ma ottieni ancora la prima parte di ogni struttura di directory, ad es. D: \ App \ hello.exe D: \ App \ info.txt D: \ App \ main.bin. Voglio solo il nome del file (con estensione)
Steve Robathan,

@SteveRobathan sì, è stato l'esempio più semplice possibile. Ho aggiornato la mia risposta.
wmz,

Quella soluzione funziona benissimo ora ... Molte grazie !!!
Steve Robathan,

Funziona bene senza sottodirectory. Come posso modificarlo per includere i file nelle sottodirectory dell'intero albero?
Steve Robathan,

@SteveRobathan Probabilmente una variante della risposta RedGrittyBrick è la migliore allora (usare dircon /sparametro aggiuntivo )
wmz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.