سؤال ما يعادل ويندوز لأمر لينكس "لمسة"؟


ما الذي تستخدمه عندما ترغب في تحديث حقل تاريخ التعديل للملف على Windows؟

  1. الأوامر يمكن الوصول إليها عبر C ++ أو .NET أو C # أو أي شيء أصلي إلى Windows (يفضل Vista)
  2. أدوات / تطبيقات ويفضل أن يكون مجانياً ، وإذا أمكن ، مفتوح المصدر أيضاً

تصحيح:  هناك بالفعل صفحة للتطبيقات كما أشار إليه CheapScotsman هنا.

إذا كان أي شخص يعرف كيف يمكنني القيام بذلك عبر C ++ ، C # ، WSH أو شيء من هذا القبيل ، جيد وجيد ، وإلا أعتقد أن كل شيء آخر يتم تغطيته في السؤال المرتبط.


153
2018-05-29 00:45


الأصل


يمكن العثور على البدائل الأربعة المذكورة أعلاه ، بالإضافة إلى أربعة غير مذكورة هنا ، في الإجابة على سؤال مماثل: "Windows Recursive Touch Command" - JdeBP
stackoverflow.com/questions/210201/...    يذكر الحمل ، بما في ذلك REM.>a - barlop


الأجوبة:


إذا كنت تريد لمس طابع التاريخ لملف باستخدام windows ، استخدم الأمر التالي في موجه الأوامر:

copy /b filename.ext +,,

(أين filename.ext هو اسم ملفك). ال +,, هو علم خاص ل copy أقول لها ببساطة تحديث التاريخ / الوقت على الملف:

* تغيير وقت وتاريخ الملف

إذا كنت تريد تعيين الوقت والتاريخ الحاليين لملف ما دون تعديل الملف ، استخدم بناء الجملة التالي:

copy /b Source+,,

تشير الفواصل إلى حذف معلمة الوجهة.

تعديل استنادًا إلى تعليقات لومي وجاستين: ضع هذا في ملف دفعي ، على سبيل المثال. touch.cmd

@COPY /B %1+,, %1

يعمل هذا حتى إذا لم يكن الملف موجودًا في الدليل الحالي (تم اختباره على نظام التشغيل Windows 7).


335
2017-09-09 09:13



ما هذا العمل؟ أين تم توثيقه؟ (يفشل Google في الفهرسة "+" ، ولا يقودني موقع MS في الاتجاه الصحيح حيث أن البحث عن "نسخة" لا يؤدي إلى الكثير من الأشياء المفيدة.) أعني أنه يعمل بشكل رائع وسأأخذ ذلك الكثير من الأمور المسلم بها ، لكنني أشعر بالفضول. - dash-tom-bang
وثائق ل copy: technet.microsoft.com/en-us/library/bb490886.aspx - Joseph Hansen
type touch.bat هو @echo off والخط التالي copy /b %1 +,, - ضعها في C:\bin أو ما لديك للنصوص الخاصة بك ، وبعد ذلك يمكنك استخدامه مثل touch myfile.txt. - Lumi
في Win7 لن يعمل هذا إذا لم تكن في المجلد الذي يحتوي على الملف. سيقوم بإنشاء نسخة في دليل العمل الحالي.
إذا كنت بحاجة إلى القيام بذلك في مجلد بعيد (مسار UNC) - يجب عليك تحديد الوجهة إلى الأمر copy أيضًا - copy /b Source+,, Source - أين Source يتضمن المسار الكامل للملف - Justin


لقد استخدمتها وأوصي بها unxutils التي هي منافذ Win32 الأصلية من الكثير من المرافق يونيكس المشتركة. هناك touch القيادة هناك.


160
2017-09-09 14:18



تقريبا كل منفذ يونيكس إلى ويندوز من أي وقت مضى ، وهذا فشل في العمل مع أحرف unicode في أسماء الملفات خارج مجموعة الترميز كما الافتراضي لبرامج غير يونيكود. اختبار اسم الملف الذي سوف يصل كل هذه الأدوات: "test тест τεστ.txt" - RomanSt
وقد gnuwin32 ذلك. ولكن في الواقع ، فشل gnuwin32 أيضًا في أحرف unicode. - barlop
التحديث من عام 2017 في نظام التشغيل Windows 10 ، يمكننا استخدام النظام الفرعي Linux للنوافذ ، والذي يقوم بتثبيت bash. لا حاجة ل cygwin ، MinGW ، unxutils أو أي unix جزئية أخرى إلى منافذ windows. docs.microsoft.com/en-us/windows/wsl/install-win10 - Davos


إذا كان كل ما تريده هو تغيير آخر تاريخ تعديل للملف (والذي كان حالتي):

C:\> powershell  (ls your-file-name-here).LastWriteTime = Get-Date

92
2018-02-16 15:21



PowerShell FTW. أعني ، بجدية ، يونيكس هو بارد ولكن PS هو أكثر برودة. - matt
يمكنك تحديث آخر مرة الكتابة لملفات / مجلدات متعددة كذلك
هذا سيعمل فقط على ملف واحد. لملفات متعددة: ls * | ForEach-Object {$ _. LastWriteTime = Get-Date} - Eli Algranti
إذا كنت تريد إجراء ذلك بشكل متكرر ، فهذا يعمل بشكل جيد: gci -recu -inc "."|٪ {$ _. LastWriteTime = Get-Date} - BrainSlugs83
@ BrainSlugs83: استخدم backticks `للرمز: gci -recu -inc "*.*" | % { $_.LastWriteTime = Get-Date } - alldayremix


type nul >>file & copy file +,,
  • يخلق file إذا لم يكن موجودا.
  • يترك محتويات الملف وحده.
  • يستخدم فقط cmd بنيت الإضافية.
  • على حد سواء آخر ولوج و خلق مرة محدثة.

تحديث

جاه! هذا لا يعمل على الملفات للقراءة فقط ، في حين أن touch هل. أقترح:

:touch
if not exist "%~1" type nul >>"%~1"& goto :eof
set _ATTRIBUTES=%~a1
if "%~a1"=="%_ATTRIBUTES:r=%" (copy "%~1"+,,) else attrib -r "%~1" & copy "%~1"+,, & attrib +r "%~1"

52
2017-11-25 10:51



من المؤسف أن النسخة لا يمكن تجاهل السمة + r بالطريقة التي يفعلها xcopy. أو ، من المؤسف أن إكسكوبي لا يدعم الغريب filename +,, بناء الجملة. - Abel
للأسف هذا لا يعمل (على الأقل ليس في ويندوز 7). يبدو أن مترجم الأوامر لا يقوم بتحديث الطابع الزمني لوجهة إعادة التوجيه إذا لم يتم تعديل الملف فعليًا (بمعنى أنه لا توجد بيانات لإعادة التوجيه). - Synetech


@ اندفاعة توم الدوي:

إليك شرح Technet لـ "+" والفواصل الغامضة:

نسخ / ب المصدر + ،

الفواصل تشير إلى إغفال   معلمة الوجهة.

يدعم الأمر نسخ دمج ملفات متعددة في ملف وجهة مفرد. بما أنه لا يمكن تحديد وجهة فارغة باستخدام حرف مسافة في موجه الأوامر ، فيمكن استخدام فاصلتين لتوضيح ذلك.

وهذا هو مرجع الأمر نسخة Technet: http://technet.microsoft.com/en-us/library/bb490886.aspx


32
2017-07-13 14:54



الآن هذا هو مجرد افسدت بناء الجملة. بشكل جاد، فيما كانوا يفكرون؟ لاحظ أيضًا أن نفس الوثائق تقول "الوجهة: مطلوب." ... أنا مندهش. - sth
هذا لا يبدو حتى العمل في ويندوز فيستا ... أتساءل عما إذا كانوا يأتون إلى رشدهم؟ - quillbreaker
يعمل في ويندوز 7 - Imran
عملت لي حتى دون الفواصل: نسخ file.ext + وبالتالي فإن الوثائق بعيدة عن السلوك الفعلي كما هو السلوك من أي توقعات معقولة. - Abgan
عملت في Windows Server 2008 ولكن فقط إذا كنت في المجلد الذي يحتوي على الملف - FrinkTheBrave


إذا كنت ترغب في ترميزها بنفسك ، تقدم .NET File.SetLastAccessTime، File.SetCreationTime و File.SetLastWriteTime أساليب.


22
2017-07-10 11:52





هنا هو نسخة متكررة باستخدام بوويرشيل ... سيؤدي هذا إلى تغيير آخر مرة معدلة لجميع الملفات والدلائل الفرعية والملفات ضمن الأدلة الفرعية لهذا الدليل

ps c:myDir> Get-ChildItem . * -recurse | ForEach-Object{$_.LastWriteTime = get-date}

21
2017-09-09 09:18



أقل مطولاً لكن مع ذلك يستخدم فقط قياسات Powershell القياسية: ls * -recurse | % { $_.LastWriteTime = Get-Date } - Jonas


لقد حاولت ذلك لإنشاء ملف فارغ في البرنامج النصي الدفعي الخاص بي. يمكنك استخدام هذا:

ECHO text>file1.txt

15
2017-09-09 09:17



هذا هو FAR أفضل طريقة سريعة .. أنا فقط بحاجة لإنشاء ملف .gitignore ، ويظل Windows 7 يشكو "يجب إدخال اسم الملف" إلخ. echo pie>.gitignore عملت علاج - شكرا!
Alex هذا غير متعلق ، ولكن خطأ windows هذا لأن الملف يبدأ بنقطة. هناك اختراق غريب للتغلب على ذلك في مستكشف Windows: اجعل الملف ينتهي بنقطة أيضًا. لذا اكتب .gitignore. وعندما تضغط على دخول ويندوز يزيل الفترة الزائدة. مجنون ، لكنه يعمل. - Brad Cupit
أتمنى أن أتمكن من إعطاء هذا القدر الكافي من الأصوات التي من شأنها أن تقبض على اللاعبين الكبار في شعبية. - Jonathan Mee
هذا لا يؤدي إلى إنشاء ملف فارغ على الرغم من أن file1.txt يحتوي على "نص" فيه. - Joshua Meyers


ال GnuWin32 يحتوي المشروع على منافذ Windows لإصدارات Gnu من الأدوات المساعدة لسطر الأوامر في Unix.

يأتي ذلك في شكل عدد من الحزم المنفصلة ويمكنك تثبيت الأوامر التي تحتاجها بدون أي تبعيات أخرى. إلى عن على touchكنت في حاجة الى CoreUtils صفقة.


14
2017-09-09 09:13