Tiedostotyypin poisto, yli 260 merkkiä

Liittynyt
19.10.2016
Viestejä
581
Ongelma: Palvelimella on tiedostoja joiden kansiorakenteen merkkijono ylittää 260 merkkiä. Haluaisin poistaa tietyn tiedostotyypin tiedostot sieltä, mutta homma jumittaa tuohon File path too long ilmoitukseen, kun CMD:llä tai Powershelliä koitan käyttää.

Löytyisikö joltain ratkaisu tähän?
 
Liittynyt
19.10.2016
Viestejä
581
Osaan kyllä poistaa noita kansioita tiedostoja, mutta kun pitäisi tietyt tiedostotyypit saada suodatettua, esim *.tmp -tiedostot. Se tässä tuottaa pään vaivaa.

Noin 7500 tiedostoa olisi erinnäisistä kansioista poistettava niin en ihan viitsisi käsitöinä sitä tehdä. Windows server 2012 R2 käyttöjärjestelmä.
 

Kautium

IOdootti
Tukijäsen
Liittynyt
16.10.2016
Viestejä
19 932
Osaan kyllä poistaa noita kansioita tiedostoja, mutta kun pitäisi tietyt tiedostotyypit saada suodatettua, esim *.tmp -tiedostot. Se tässä tuottaa pään vaivaa.

Noin 7500 tiedostoa olisi erinnäisistä kansioista poistettava niin en ihan viitsisi käsitöinä sitä tehdä. Windows server 2012 R2 käyttöjärjestelmä.
Olihan tuolla mun linkin takana vaikka mitä menetelmiä, Powershell-funktioista lähtien.
 
Liittynyt
18.10.2016
Viestejä
390
Koodi:
To specify an extended-length path, use the "\\?\" prefix. For example, "\\?\D:\very long path"
Siihen sitten del polku *.tmp

upload_2018-4-5_17-9-49.png


Tomisikohan tuolla.
 
Liittynyt
19.10.2016
Viestejä
581
Olihan tuolla mun linkin takana vaikka mitä menetelmiä, Powershell-funktioista lähtien.
Ei onnistunut Powershellin get-childitem ja remove-item käskyillä.

Koodi:
To specify an extended-length path, use the "\\?\" prefix. For example, "\\?\D:\very long path"
Siihen sitten del polku *.tmp



Tomisikohan tuolla.
Tälläkin tavalla tulee edelleen too long path ilmoitus. Powershell ei taida tunnistaa tuota \\?\ tyyliä ollenkaan, kun mitään ei tapahdu.
 
Liittynyt
17.10.2016
Viestejä
12 116
Renameta folderit väliaikaisesti lyhyemmiksi ja vaihda sitten takaisin?

edit:
Ole varovainen että takaisin nimeäminen onnistuu. Ts. testaa ensin jollain dummyrakenteella.
 
Liittynyt
19.10.2016
Viestejä
581
Renameta folderit väliaikaisesti lyhyemmiksi ja vaihda sitten takaisin?

edit:
Ole varovainen että takaisin nimeäminen onnistuu. Ts. testaa ensin jollain dummyrakenteella.
Muuten kyllä tietenkin, mutta kun kansioita on satoja ja tiedostoja tuhansia. Menisi aika työlääksi ja riskialttiiksi, jos tämä pitäisi manuaalisesti tehdä.
 
Liittynyt
17.10.2016
Viestejä
12 116
Auttaisiko Linux subsystem for Windows? Jos et halua serverille asennella, niin mounttaa jako etänä ja aja shelliä jostain muualta?
 

Kautium

IOdootti
Tukijäsen
Liittynyt
16.10.2016
Viestejä
19 932
Tälläkin tavalla tulee edelleen too long path ilmoitus. Powershell ei taida tunnistaa tuota \\?\ tyyliä ollenkaan, kun mitään ei tapahdu.
Ei tuon notaation pidäkään toimia Powershellissä. Käyt nyt vaan nöyrästi sen linkkaamani sivuston keskustelut läpi ja kokeilet sieltä löytyviä vaihtoehtoja. Siellä on mm. se "Remove-PathToLongDirectory" -funktio, jolle on varmasti helppo syöttää foreach-loopissa muuttujasta ne poistettavat hakemistot.

En nyt jouda tähän hätään kirjoittamaan ja testaamaan koko skriptiä, mutta ilmoittele jos ei onnistu, niin katsellaan tarkemmin.
 
Liittynyt
19.10.2016
Viestejä
581
Ei tuon notaation pidäkään toimia Powershellissä. Käyt nyt vaan nöyrästi sen linkkaamani sivuston keskustelut läpi ja kokeilet sieltä löytyviä vaihtoehtoja. Siellä on mm. se "Remove-PathToLongDirectory" -funktio, jolle on varmasti helppo syöttää foreach-loopissa muuttujasta ne poistettavat hakemistot.

En nyt jouda tähän hätään kirjoittamaan ja testaamaan koko skriptiä, mutta ilmoittele jos ei onnistu, niin katsellaan tarkemmin.
"Remove-PathToLongDirectory" -funktiohan tekee vain tuossa tyhjän kansion, jonka se sitten Robocopyllä peilaa kansion yli. Robocopyhan tuhoaisi kansiosta muutkin tiedostot kuin pelkstään nuo *.tmp.

Olen melko montaa keinoa jo noista yrittänyt, mutta omat taidot ei näytä riittävän. Joku fiksumpi varmaan osaisi oikeanlaisen skriptin kirjoittaa.
 

Kautium

IOdootti
Tukijäsen
Liittynyt
16.10.2016
Viestejä
19 932
"Remove-PathToLongDirectory" -funktiohan tekee vain tuossa tyhjän kansion, jonka se sitten Robocopyllä peilaa kansion yli. Robocopyhan tuhoaisi kansiosta muutkin tiedostot kuin pelkstään nuo *.tmp.
Ok, no se oli sitten tarkoitettu vain kansioille. Soveltaen se voisi silti toimia.

Toimiikohan Rename-Item? Jos toimii, niin sillähän on helppo ensin lyhentää tiedostojen nimet ja sitten poistaa ne.

Edit.
Eikun niin, kyse ei ollutkaan tiedoston nimen pituudesta, vaan koko polun pituudesta.

Olen melko montaa keinoa jo noista yrittänyt, mutta omat taidot ei näytä riittävän. Joku fiksumpi varmaan osaisi oikeanlaisen skriptin kirjoittaa.
Jos ei tule muita mitään vinkkejä, niin voin yrittää illemmalla/viikonloppuna tutkia.
 
Liittynyt
19.10.2016
Viestejä
581
Auttaisiko Linux subsystem for Windows? Jos et halua serverille asennella, niin mounttaa jako etänä ja aja shelliä jostain muualta?
Osaako tämä varmasti käsitellä yli 250 merkin kansiorakenteita? Vai onko tuo joku virtuaalipc joka kuitenkin tökkää windowsin merkkirajoituksiin.
 
Liittynyt
19.10.2016
Viestejä
581
Taisin löytää ratkaisun. Windows 10 mahdollistaa nuo pidemmät kansiorakenteet kun käy rekisteriä muokkaamassa. Tämän jälkeen CMD lopetti "Path too long" -valituksen.

Etänä vaan nyt raskas ajaa tuota poistoa niin pitää ensi viikolla ajaa tuo kunhan pääsee taas paikalliselle koneelle.
 
Liittynyt
19.10.2016
Viestejä
145
CMD:llä kansion/kansiorakenteen voi myös mapata/tehdä virtuaaliasemaksi hieman samalla tavalla kuin esim. verkkokansiot (netuse). Komento on "subst" ja se toimii yli 260 merkkiä käsittävissä tiedostorakenteissa. Eli esimerkiksi:

subst x: C:\testi\<260 merkkiä pitkä kansion nimi>

Virtuaaliaseman voi poistaa komennolla:
subst x: /d
 
Liittynyt
19.10.2016
Viestejä
581
CMD:llä kansion/kansiorakenteen voi myös mapata/tehdä virtuaaliasemaksi hieman samalla tavalla kuin esim. verkkokansiot (netuse). Komento on "subst" ja se toimii yli 260 merkkiä käsittävissä tiedostorakenteissa. Eli esimerkiksi:

subst x: C:\testi\<260 merkkiä pitkä kansion nimi>

Virtuaaliaseman voi poistaa komennolla:
subst x: /d
Juu tätäkin koitin kyllä ja näinhän se onnistui mutta tuntui silti työläältä kun kansioita on niin paljon.
 
Liittynyt
23.01.2018
Viestejä
351
No JES!! Kiitos tästä triidistä! Sain vihdoin tuon vuosia roikkuneen windows.old kansion pois. Koneen osat vaihtunu kovalevyjä myöten pariinkin otteeseen ja tuossa sit Win10 asennuksen jälkeen tuonne jäi kummittelemaan hyvin pitkäksi aikaa "Julia amongs the stars" pelin kuvakkeet vanhan win8:n start menu -kansioon. Tilanne ei ole varsinaisesti haitannut koneen käyttöä, mutta käytin ihan tota DIR /X komentoa tavottaakseni tuon 8 merkkisen tiedostonimen ja tähän vaan DEL.

 
Toggle Sidebar

Uusimmat viestit

Statistiikka

Viestiketjut
243 591
Viestejä
4 252 542
Jäsenet
71 344
Uusin jäsen
Suskari

Hinta.fi

Ylös Bottom