سؤال

من أجل حذف جميع ملفات/مجلدات/مجلدات فرعية في "MyFolder" ، أستخدم هذا الخط البسيط في ملف الدُفعة:

FOR /R myfolder %%X IN (.svn) DO (RD /S /Q "%%X")

هذا يعمل ، ولكن إذا لم يكن هناك ملفات/مجلدات ".SVN" ، فإن ملف الدُفعات يعرض تحذيرًا يقول: "لا يمكن للنظام العثور على الملف المحدد." هذا التحذير صاخب للغاية لذلك كنت أتساءل كيف اجعل الأمر يفهم أنه إذا لم يجد أي ملفات/مجلدات ".SVN" ، فعليه تخطي الأمر RD.

عادة ما يكون استخدام البطاقات البرية كافية, ، لكن في هذه الحالة لا أعرف كيفية استخدامها ، لأنني لا أريد حذف الملفات/المجلدات باستخدام ملحق .SVN ، لكنني أريد حذف الملفات/المجلدات المسمى بالضبط ".svn" ، لذلك إذا كنت افعل هذا:

FOR /R myfolder %%X IN (*.svn) DO (RD /S /Q "%%X")

لن يحذف الملفات/المجلدات المسمى بالضبط ".SVN". حاولت هذا أيضًا:

FOR /R myfolder %%X IN (.sv*) DO (RD /S /Q "%%X")

لكنه لا يعمل أيضًا ، فهو لا يحذف شيئًا.

هل كانت مفيدة؟

المحلول

يمكنك المحاولة

FOR /R myfolder %%X IN (.svn) DO (RD /S /Q "%%X" 2>nul)

نصائح أخرى

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *svn') do (rd /s /q "%%i")

شيء من هذا القبيل باستخدام البحث:

rm -rf `find . -name ".svn" -type d`

تعديل:

أعلم أن هذا للينكس (قرأت باش بدلاً من الدُفعة). سأتركها هنا لمساعدة مستخدمي Linux الذين سينتهيون بشكل عشوائي هنا :)

في الواقع ، هذه الإجابة من Jesper Rønn-Jensen فيhttp://justaddwater.dk/2011/03/01/easy-delete-all-svn-subfolders-in-windows-explorer/

اعتقدت أنه كان من الأسهل بكثير أن أشاركه. أقوم بتحويل عدة مشاريع من .SVN إلى .git ، لذلك كان هذا رائعًا. يضيف عنصر قائمة إلى Explorer حتى تتمكن من إزالة المجلدات. إنشاء ملف .reg ، واستيراده.

enter image description here

Windows Registry Editor Version 5.00
;
; Running this file will give you an extra context menu item in Windows Explorer
; "Delete SVN folders"
;
; For the selected folder, it will remove all subfolders named ".svn" and their content
; Tip from http://www.iamatechie.com/remove-all-svn-folders-in-windows-xp-vista/
;
; Enrichened with comments by Jesper Rønn-Jensen ( http://justaddwater.dk/ )
;
;
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

Sidenote غريب: إذا كنت أستخدم

FOR /R . %%X IN (*.svn) DO (echo "%%X")

بدلاً من


FOR /R myfolder %%X IN (.svn) DO (RD /S /Q "%%X")

لا يقتصر الأمر على إدراج جميع الدلائل التي تنتهي في .SVN ، بل إنها تسرد جميع محتوياتها أيضًا. هذا خطأ في الأمر for ، لقد أعطاني توسعًا حيث لم أعطيه أي بطاقة برية. غريب جدا.

كين

إذا كنت ترغب في حذف جميع المجلدات الفرعية المسمى .svn في Windows ثم قم بإنشاء ملف دفعة مع هذا المحتوى:

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i"
)

احفظه في ملف del_all_dot_svn_folders.cmd . شغلها. أنتهيت.

شكرا ل http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/

تذكر أن الكود أعلاه يحتوي على .SVN في حين أن الكود في الرابط يحتوي فقط على *SVN ، لذا من الأفضل أن يكون لديك .SVN ليس له تأثير غير مرغوب فيه عن طريق الخطأ.

إليكم المفضل لدي ، بسيط ومضغوط:

find ./ -name ".svn" | xargs rm -Rf

فيسش

لحذف جميع ملفات SVN على Windows

for /d /r . %d in (.svn) do @if exist "%d" rd /s/q "%d"

.SVN هو اسم المجلد

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top