Memindahkan file / folder tersembunyi dengan baris perintah atau file batch

15

Pertanyaan

Apakah ada yang tahu cara untuk memindahkan file dan folder yang memiliki atribut tersembunyi, sistem, atau read-only yang ditetapkan dari baris perintah atau file batch? (Tidak, menghapus atribut terlebih dahulu bukan pilihan karena tidak ada cara praktis untuk mengetahui atribut mana yang ditetapkan untuk mengatur ulang atribut mereka setelah pindah.)


(Gagal) Berusaha

  1. Menggunakan moveperintah dasar tidak bekerja dengan item dengan set atribut tersembunyi atau sistem dan untuk beberapa alasan, itu tidak memiliki switch untuk menentukan atribut seperti dirdan delperintah lakukan.

  2. Saya mencoba menggunakan utilitas yang saya tulis yang menggunakan fungsi operasi file shell, tetapi itu membutuhkan penggunaan start /wuntuk mencegah file batch berjalan di depan, dan ia mengeluh tentang dukungan nama file panjang karena beberapa alasan.

  3. Saya mencoba menggunakan robocopy, tetapi pertama-tama menyalin file dan kemudian menghapus aslinya bukan hanya memindahkan sumber (yang menghasilkan penundaan frustasi, bahkan dengan output berlebihan diarahkan ke nul).

(Anehnya tampaknya hanya sedikit orang yang perlu memindahkan file tersembunyi dari baris perintah. Yang dapat saya temukan hanyalah orang yang mengabaikan upaya ini.)

Synetech
sumber
4
Jika Anda membuat \tempdirektori, mengapa tidak mengganti nama / memindahkan %1direktori saja \temp? Atau apakah itu hanya kasus yang disederhanakan?
Ken
Itu memang kasus yang disederhanakan. Mengganti nama saja tidak akan berhasil.
Synetech
Mengapa melucuti atribut bukan opsi? Itu akan menjadi cara yang tepat (dan dimaksudkan) untuk melakukannya.
Benteng
> Mengapa melucuti atribut bukan opsi? @Idigas, bagaimana Anda bisa tahu atribut mana yang diset pada setiap item sehingga mereka dapat diatur ulang dengan benar? > Itu akan menjadi cara yang tepat (dan dimaksudkan) untuk melakukannya. Itu sama sekali tidak terdengar benar.
Synetech
Maafkan ketidaktahuan saya, tetapi akankah sesuatu seperti jamesewelch.com/2008/05/01/... bekerja?
Dr Kitty

Jawaban:

6

Saya telah berhasil memindahkan file read-only, hidden menggunakan MV.EXE dari GNU untuk utilitas Win32. File target mempertahankan atribut read-only, hidden.

Anda harus mengunduh seluruh paket:

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

RobW
sumber
1
Tidak buruk. Itu berhasil, sayangnya ia mati ketika berurusan dengan file yang dimulai dengan --; ia berpikir bahwa itu adalah argumen, bukan nama file.
Synetech
2
Tidak buruk? Itu dia? Ini memecahkan permintaan Anda. Saya tidak melihat apa-apa tentang persyaratan '--filename', atau saya akan mengujinya. Permintaan maaf, tetapi persyaratan tersembunyi adalah olahraga yang buruk.
RobW
Ya tidak buruk. Itu hanya operasi dasar yang saya tanyakan. Jika tidak dapat menangani nama file Windows yang valid, maka itu tidak terlalu berguna sekarang kan? Menangani nama file dengan benar bukanlah persyaratan "tersembunyi".
Synetech
3
@ Sinetech, Anda hanya perlu memenuhi syarat nama file:mv .\--1.txt newdirectory
dangph
4
Utilitas Unix secara umum digunakan --foountuk menunjukkan argumen baris perintah. Untuk mendukung nama file yang dimulai dengan --, kebanyakan dari mereka menerima argumen khusus --untuk menunjukkan akhir dari argumen baris perintah dan awal nama file. Saya tidak yakin apakah mvini salah satu dari perintah ini, tetapi jika ya, maka Anda harus dapat:mv -- --weirdFileName.gotcha betterFileName.txt
Ben
5

Saya baru saja menyelesaikan ini menggunakan:

xcopy /H hidden_file destination_file
del /AH hidden_file
Ben
sumber
1
Pertanyaannya adalah bagaimana cara memindahkan file. OP tahu cara menyalin dan menghapus, dan tidak mau melakukan itu. Juga, dia mengatakan bahwa dia sudah tahu cara menghapus file yang tersembunyi.
Scott
2
Scott benar; jika volume sumber dan tujuan sama, hal terakhir yang ingin Anda lakukan adalah "memindahkan" file dengan menyalinnya terlebih dahulu. Paling-paling, tidak ada gunanya dengan satu file kecil, tetapi dengan file besar, atau banyak file kecil (apalagi banyak file besar), itu mengerikan (CPU tinggi dan beban disk). Ini menjadi lebih buruk jika Anda memindahkan seluruh pohon direktori. Sistem file sudah mendukung langkah cepat dan mudah dengan mengubah pointer entri direktori; masalahnya adalah dengan antarmuka OS yang mencegah melakukannya dengan file yang tersembunyi.
Synetech
Cukup adil, itu bukan langkah nyata. Dan untuk pergerakan besar dapat memberikan banyak overhead. Tetapi OP tidak pernah benar-benar mengatakan bahwa salin + hapus adalah hal yang buruk, dan terlepas dari itu, ini adalah salah satu hit teratas dalam pencarian web untuk cara memindahkan file tersembunyi dari baris perintah, dan itu bekerja untuk apa yang harus saya lakukan . Saya membayangkan orang yang hanya mencari cara memindahkan beberapa file tersembunyi mungkin menggunakannya juga daripada menginstal alat GNU atau PowerShell. Sangat menjengkelkan bahwa perintah "pindah" tidak bisa melakukan ini.
Ben
1
Dari pertanyaan: " (Gagal) Upaya ... 3. Saya mencoba menggunakan robocopy, tetapi pertama-tama menyalin file dan kemudian menghapus aslinya bukan hanya memindahkan sumber (yang menghasilkan penundaan frustasi, ...)."
Scott
Cukup adil ... Saya kira saya membacanya sebagai "Saya tidak ingin menggunakan robocopy" bukannya "Saya tidak ingin operasi copy + delete." Tapi saya mengerti maksud Anda.
Ben
3

Powershell v2:

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

juga memindahkan file tersembunyi dengan set atribut tersembunyi dan sistem. Akan bekerja dengan file yang diawali dengan '-'.

RobW
sumber
1
Saya yakin itu akan berhasil, tetapi PowerShell sangat lambat dibandingkan dengan command-prompt yang normal. Dan tidak, itu bukan persyaratan “tersembunyi”, saya dengan jelas menunjukkan ketidaksukaan saya terhadap penundaan Robocopy dalam pertanyaan itu. (Tolong jangan bilang itu bekerja cepat di sistem Anda karena itu tidak membantu saya dengan cara apa pun. Di sistem saya dibutuhkan beberapa detik hanya untuk memuat, dan bahkan hanya dengan menekan Tabuntuk menyelesaikan nama file dibutuhkan> 1 detik yang dipesan besarnya lebih lambat dari pada cmd. Jadi kecuali jika Anda mau membeli saya sistem baru, maka PS tidak akan membantu.)
Synetech
Solusi PowerShell yang lebih mudah:mv .oldfile .newfile
Jay Sullivan
0

Bagaimana dengan ini?

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
sumber
Jelas ini hanya berfungsi dalam batasan di mana hardlink diperbolehkan. Saya pikir ini berarti tujuan file harus pada partisi yang sama dari disk fisik yang sama. Tetapi jika kendala ini tidak terpenuhi, saya cukup yakin salinan + delete akan tetap diperlukan, di bawah tenda.
Ben
Ide yang menarik. Tentu saja itu terlalu terbatas (saya hanya menggunakan NTFS untuk drive sistem Windows 7 dan FAT32 untuk yang lainnya. Juga, saya biasanya menggunakan Windows XP.) Tampaknya juga bekerja tidak konsisten dengan kombinasi atribut yang berbeda. Misalnya, jika Anda mengatur atribut read-only, itu tidak akan membiarkan Anda menghapus file "baru" saat pertama kali Anda mencoba untuk menghapusnya, alih-alih itu menghapus atribut. ಠ_ ఠ Dan tentu saja, itu tidak berfungsi untuk folder.
Synetech
0

Kami sudah memiliki PowerShell dan mvperintahnya. Untuk kelengkapan, oleh karena itu, inilah cara melakukannya dengan TCC / LE Perangkat Lunak JP , yang movedan renperintahnya keduanya memiliki /a:opsi yang umum untuk banyak perintahnya yang memindai direktori untuk file yang akan dioperasikan:

[C: \ Users \ JdeBP] sentuh / 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] pindah / a: hs --wibble-- --wobble--
C: \ Users \ JdeBP \ - wibble-- -> C: \ Users \ JdeBP \ - wobble--
     1 file dipindahkan

[C: \ Users \ JdeBP] ren / a: hs --wobble-- --wurble--
C: \ Users \ JdeBP \ - wobble-- -> C: \ Users \ JdeBP \ - wurble--
     1 file diganti namanya

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

[C: \ Users \ JdeBP]

Bacaan lebih lanjut

  • Perangkat Lunak JP. PINDAHKAN . Ambil Bantuan Command / TCC.
  • Perangkat Lunak JP. REN . Ambil Bantuan Command / TCC.
JdeBP
sumber
Untuk satu orang saya tidak akan membeli perangkat lunak komersial untuk melakukan apa yang seharusnya bisa saya lakukan dengan program kecil dan gratis (dan saya mungkin harus menulis sendiri seperti biasa). Apapun, Anda mengkodekan atribut yang tidak baik karena Anda tidak dapat memprediksi atribut apa yang mungkin dimiliki folder. Juga, dengan menyentuhnya, Anda kehilangan cap waktu aslinya.
Synetech