Przenoszenie ukrytych plików / folderów za pomocą wiersza polecenia lub pliku wsadowego

15

Pytanie

Czy ktoś zna sposób przenoszenia plików i folderów, które mają ustawiony atrybut ukryty, systemowy lub tylko do odczytu z wiersza polecenia lub pliku wsadowego? (Nie, usunięcie najpierw atrybutów nie jest opcją, ponieważ nie ma praktycznego sposobu, aby dowiedzieć się, które atrybuty zostały ustawione, aby je ponownie ustawić po przeniesieniu).


(Nieudane próby

  1. Korzystanie podstawowe movekomendy nie działa z przedmiotów z ukrytej lub systemu ustawionym atrybutem iz jakiegoś powodu, to nie ma przełączników , aby określić atrybuty podobnie jak diri delpolecenia zrobić.

  2. Próbowałem użyć napisanego przeze mnie narzędzia, które korzysta z funkcji operacji na plikach powłoki, ale wymaga użycia, start /waby uniemożliwić uruchomienie pliku wsadowego, i z jakiegoś powodu narzeka na obsługę długich nazw plików.

  3. Próbowałem użyć robocopy, ale najpierw kopiuje pliki, a następnie usuwa oryginały zamiast po prostu przenosić źródło (co powoduje frustrujące opóźnienie, nawet przy przekierowaniu nadmiernego wyjścia nul).

(Zaskakujące wydaje się, że niewiele osób musiało przenosić ukryte pliki z wiersza poleceń. Mogłem tylko znaleźć tę jedną osobę, która zrezygnowała z próby.)

Synetech
źródło
4
Jeśli tworzysz \tempkatalog, dlaczego po prostu nie zmienić nazwy / przenieść %1katalog \temp? Czy to tylko uproszczony przypadek?
Ken
To jest rzeczywiście uproszczony przypadek. Po prostu zmiana nazwy nie działałaby.
Synetech
Dlaczego usunięcie atrybutu nie jest opcją? To byłby właściwy (i zamierzony) sposób, aby to zrobić.
Wieża
> Dlaczego usunięcie atrybutu nie jest opcją? @Idigas, skąd dokładnie wiedziałbyś, które atrybuty zostały ustawione na każdym elemencie, aby można je było ponownie ustawić? > To byłby właściwy (i zamierzony) sposób na zrobienie tego. To wcale nie brzmi dobrze.
Synetech
Wybacz moją ignorancję, ale czy coś takiego jak jamesewelch.com/2008/05/01/… zadziała?
Dr Kitty,

Odpowiedzi:

6

Udało mi się przenieść ukryte pliki tylko do odczytu za pomocą MV.EXE z narzędzi GNU for Win32. Plik docelowy zachowuje ukryte atrybuty tylko do odczytu.

Musisz pobrać cały pakiet:

http://gnuwin32.sourceforge.net/downlinks/coreutils-bin-zip.php

RobW
źródło
1
Nie jest zły. To działa, niestety umiera w przypadku plików, które zaczynają się od --; uważa, że ​​jest to argument zamiast nazwy pliku.
Synetech
2
Nie jest zły? Otóż ​​to? To rozwiązuje twoją prośbę. Nic nie widzę w wymaganiu „--filename”, inaczej bym go przetestował. Przepraszam, ale ukryte wymagania to kiepski sport.
RobW
Tak, nieźle. Wykonuje tylko podstawową operację, o którą pytałem. Jeśli nie jest w stanie obsłużyć prawidłowych nazw plików Windows, to nie jest teraz bardzo przydatny, prawda? Prawidłowa obsługa nazw plików nie jest wymogiem „ukrytym”.
Synetech
3
@ Synetech, wystarczy zakwalifikować nazwę pliku:mv .\--1.txt newdirectory
dangph
4
Narzędzia uniksowe w powszechnym użyciu --foodo oznaczania argumentów wiersza poleceń. W celu obsługi nazw plików rozpoczynających się od --, większość z nich akceptuje specjalny argument --oznaczający koniec argumentów wiersza poleceń i początek nazw plików. Nie jestem pewien, czy mvjest to jedno z tych poleceń, ale jeśli tak, to powinieneś być w stanie:mv -- --weirdFileName.gotcha betterFileName.txt
Ben
5

Właśnie to zrobiłem, używając:

xcopy /H hidden_file destination_file
del /AH hidden_file
Ben
źródło
1
Pytanie dotyczy sposobu przenoszenia plików. OP wie, jak kopiować i usuwać, i nie chce tego robić. Mówi też, że już wie, jak usunąć ukryte pliki.
Scott,
2
Scott ma rację; jeśli woluminy źródłowy i docelowy są takie same, ostatnią rzeczą, którą chcesz zrobić, to „przenieść” plik, kopiując go najpierw. W najlepszym przypadku jest to bezcelowe w przypadku pojedynczego małego pliku, ale z dużym plikiem lub wieloma małymi plikami (nie mówiąc już o wielu dużych plikach) jest okropny (wysokie obciążenie procesora i dysku). Jest to tym gorsze, jeśli przenosisz całe drzewo katalogów. System plików obsługuje już szybkie i łatwe przenoszenie poprzez zmianę wskaźników pozycji katalogu; problem dotyczy interfejsu systemu operacyjnego, który uniemożliwia to w przypadku ukrytych plików.
Synetech,
W porządku, to nie jest prawdziwy ruch. A w przypadku dużych ruchów może to powodować duże obciążenie. Ale OP nigdy tak naprawdę nie powiedział, że kopiowanie i usuwanie jest koniecznie złą rzeczą i niezależnie od tego, jest to jedno z największych haseł w wyszukiwaniach internetowych, w jaki sposób przenieść ukryty plik z wiersza poleceń, i działało to, co musiałem zrobić . Wyobrażam sobie, że ludzie, którzy szukają sposobu na przeniesienie kilku ukrytych plików, mogą go również użyć zamiast instalować narzędzia GNU lub PowerShell. Bardzo denerwujące, że polecenie „move” po prostu nie może tego zrobić.
Ben
1
Z pytania: „ (Nieudane) próby … 3. Próbowałem użyć robocopy, ale najpierw kopiuje pliki, a następnie usuwa oryginały zamiast po prostu przenosić źródło (co powoduje frustrujące opóźnienie, ...).”
Scott
W porządku ... Chyba przeczytałem to jako „Nie chcę używać robocopy” zamiast „Nie chcę operacji kopiowania i usuwania”. Ale rozumiem twój punkt widzenia.
Ben
3

Powershell v2:

move-item -force   '--1.txt' newdirectory

przenosi także ukryte pliki z ustawionymi ukrytymi i atrybutami systemowymi. Działa z plikami zaczynającymi się od „-”.

RobW
źródło
1
Jestem pewien, że to zadziała, ale PowerShell jest wyjątkowo powolny w porównaniu do zwykłego wiersza polecenia. I nie, to nie jest „ukryty” wymóg, wyraźnie wyraziłem swoją niechęć do opóźnienia Robocopy w pytaniu. (Proszę nie mów mi, że działa szybko w twoim systemie, ponieważ to w żaden sposób mi nie pomaga. W moim systemie ładowanie zajmuje kilka sekund, a nawet naciśnięcie, Tababy ukończyć nazwę pliku, zajmuje> 1 sekundę, co jest kolejnością o wielkości wolniej niż w cmd
środku
Jeszcze łatwiejsze rozwiązanie PowerShell:mv .oldfile .newfile
Jay Sullivan
0

Co powiesz na to?

C:\Temp>attrib hidden.txt
A   H        C:\temp\hidden.txt

C:\Temp>mklink /H renamed.txt hidden.txt
Hardlink created for renamed.txt <<===>> hidden.txt

C:\Temp>del /AH hidden.txt

C:\Temp>attrib renamed.txt
A   H        C:\temp\renamed.txt
Ben
źródło
Oczywiście działa to tylko w granicach, w których dozwolone są linki twarde. Myślę, że oznacza to, że miejsce docelowe pliku musi znajdować się na tej samej partycji tego samego dysku fizycznego. Ale jeśli to ograniczenie nie zostanie spełnione, jestem prawie pewien, że i tak będzie wymagane kopiowanie i usuwanie, pod maską.
Ben
Ciekawy pomysł. Oczywiście jest zbyt ograniczony (używam tylko NTFS dla dysku systemowego Windows 7 i FAT32 do wszystkiego innego. Zazwyczaj używam Windows XP). Wydaje się również, że działa niespójnie z różnymi kombinacjami atrybutów. Na przykład, jeśli ustawisz atrybut tylko do odczytu, nie pozwoli on usunąć „nowego” pliku przy pierwszej próbie jego usunięcia, zamiast tego usuwa atrybut. ಠ_ ఠ I oczywiście nie działa dla folderów.
Synetech,
0

Mieliśmy PowerShell i mvpolecenie. Dlatego, dla kompletności, oto jak to zrobić z TCC / LE JP Software , którego movei renpolecenia mają /a:opcję wspólną dla wielu poleceń, które skanują katalogi w poszukiwaniu plików do działania:

[C: \ Users \ JdeBP] touch / c --wibble--
11.03.2014 20: 29: 18.868 C: \ Users \ JdeBP \ - wibble--

[C: \ Users \ JdeBP] attrib + h + s. \ - wibble--
___A___________ -> _HSA___________ C: \ Users \ JdeBP \ - wibble--

[C: \ Users \ JdeBP] move / a: hs --wibble-- --wobble--
C: \ Users \ JdeBP \ - wibble-- -> C: \ Users \ JdeBP \ - wobble--
     Przeniesiono 1 plik

[C: \ Users \ JdeBP] ren / a: hs --wobble-- --wurble--
C: \ Users \ JdeBP \ - wobble-- -> C: \ Users \ JdeBP \ - wurble--
     1 plik zmieniono nazwę

C: \ Users \ JdeBP] dir / a: hs / t / m / k --wurble--
11.03.2014 20:29 0 _HSA___________ - wurble--

[C: \ Users \ JdeBP]

Dalsza lektura

  • Oprogramowanie JP. MOVE . Przejmij pomoc w zakresie poleceń / TCC.
  • Oprogramowanie JP. REN . Przejmij pomoc w zakresie poleceń / TCC.
JdeBP
źródło
Po pierwsze, nie zamierzam kupować komercyjnego oprogramowania do robienia tego, co powinienem zrobić za pomocą małego, bezpłatnego programu (i mogę równie dobrze skończyć z pisaniem go samemu jak zwykle). Niezależnie od tego, na stałe zakodowałeś atrybuty, co nie jest dobre, ponieważ nie możesz przewidzieć, jakie atrybuty może mieć folder. Ponadto, dotykając go, utraciłeś oryginalny znacznik czasu.
Synetech