forfiles.exe не працює для файлів c: \ users \ internet \ завантаження чи документів


0

Я не можу знайти c: \ users \ internet \ downloads \ new.txt, коли запускаю скрипт у cmd

це тому, що в обліковому записі користувача на windows7 є значок блокування, сценарій працює добре, якщо я зміню розташування на папку c: \ test

forfiles.exe / P "C: \ Users \ Internet" / S / M . / D -7 / C "cmd.exe / c del / Q" "@path" "

Що мені потрібно зробити, це видалити файли кожні 7 днів, що залишилися в папці з документами та завантаженнями, на загальному акаунті бібліотеки, який використовуються всі на роботі, це обліковий запис гостя Windows 7.


Ви намагалися запустити cmd як адміністратор?
NoLifeKing

забудьте файли, а потім на мить спробуйте команду del самостійно. І я гадаю, що ви також можете перегукуватися, щоб перевірити використання файлів, таких як cld / c echo del / q "" @path "" .... І спробуйте окремі команди за межами forfiles. Тут ви не робили основного усунення несправностей, і можливо, це не має нічого спільного з файлами.
барлоп

Ви справді використовували C:\users\Internet?? Вам слід використовувати реальний шлях до вказаних каталогів. Або у вас є C:\Users\Internetна своєму комп’ютері?
Рік

Користувачі увійшли до локального гостьового акаунта, це правильно, так що c: \ users \ internet \ downloads та c: \ users \ internet \ документи, я абсолютно радий забути файли та спробувати звичайний пакетний файл, прагнучи видалити файли 7 днів.
hirogen

Просто я ніколи не бачив C:\Users\Internetза гостьовим рахунком. (завжди C:\Users\Guest\Downloads). Ви ведете це в обліковому записі або у власному акаунті. Крім того, мені довелося використовувати /M *.*замість того, /M .щоб знайти файли.
Рік

Відповіді:


0

Гаразд. Отже, це не рахунок, Guestа а Local account.

Спочатку кілька дрібниць, які я помітив у вашому сценарії.

  • Якщо ви збираєтесь видалити все, що старше 7 днів, з усього профілю (як це робиться у вашому сценарії), ви потрапите в проблеми. Ви також будете видаляти багато файлів appdata, "налаштування програми" тощо ... Ви цього не хочете, оскільки ці програми можуть стати непридатними. За замовчуванням ви не бачите цих файлів / каталогів, але якщо ви використовуєте командний рядок, вони є. (Спробуйте налаштувати Провідник для відображення прихованих файлів або набору тексту C:\Users\Internet\appdataв адресному рядку)
  • Я все ще нічого не маю /M .. Мені потрібно повністю /M *.*або пропустити його. (за замовчуванням /M *)
  • Якщо ви використовуєте це як самостійно (а не "Інтернет"), у вас немає достатнього дозволу, щоб видалити їх. (Звідси піктограма блокування у файлі) Вам потрібно взяти право власності на файли, перш ніж ви зможете їх видалити. Ви можете спробувати запустити сценарій як адміністратор, але я не впевнений, чи допоможе це.

Існує кілька способів вирішити цю проблему. Нижче я згадую інший підхід щодо скидання всього облікового запису. Але ось сценарій, який видаляє файли старше 7 днів.

Він змінює поточний каталог на C:\Users\Internet( popdзмінює його назад). Потім він проходить через заданий набір каталогів, з яких потрібно видалити файли. Ви бачите, що я не вказав цілого appdata -dir, але включив AppData\Local\Tempі Temporary Internet Files. Додайте свої, якщо ви цього хочете. Це візьме право власності на всі файли та каталоги. Тоді він надасть Everyoneправа на ці файли (тому він не перериватиме їх програми). Після цього буде видалено лише файли, старші 7 днів. Вам потрібно вказати, del /aщоб включити видалення прихованих файлів.

(Я додав кілька чеків у верхній частині batch-файлу, щоб переконатися, що ви знаходитесь у правильному каталозі. Ви дійсно не хочете робити це в іншому каталозі випадково;)

@echo off
PUSHD C:\Users\Internet
IF /I "%cd%"=="C:\Users\Internet" GOTO OK
ECHO Oops, CD didn't work. You really don't want to do this in another directory !!!
POPD
EXIT/b
:OK
SET "dirs=AppData\Local\Temp:Contacts:Desktop;Documents:Downloads:Favorites:Links:Music:Pictures:Videos:AppData\Local\Microsoft\Windows\Temporary Internet Files"
FOR %%d IN ("%dirs::=" "%") DO (
  TAKEOWN /R /D Y /F %%d
  ICACLS %%d /T /GRANT Everyone:F
  FORFILES /P %%d /S /D -7 /C "cmd /c del /q /a "@path""
)
POPD

Це не видалить "налаштування програми", але також залишить інші тимчасові каталоги (крім AppData \ Local \ Temp) у спокої. Тож якщо у вас є інші каталоги, ви можете включити їх до setрядка.

Іншим підходом було б скидання всього облікового запису користувача. Ви могли б зробити

net user internet /delete
net user internet /add
rd c:\users\internet /s/q

Вам потрібно це зробити як адміністратор. Але таким чином всі налаштування, які зробив користувач, втрачаються. Не тільки старше 7 днів. Це все очистить. Не впевнений, чи бажано це. Однак це "найчистіше". Якщо це загальнодоступний комп'ютер, ви можете це робити через день (або кожен день). Ви також можете створити резервну копію профілю та відновити його, але це також видаляє молодші файли та скидає обліковий запис на певний час / стан.

З якої причини слід видаляти лише файли, старші 7 днів? Якщо ви дійсно хочете потрапити до файлів молодше 7 днів, вам потрібен перший сценарій.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.