Tambahkan cap waktu ke file yang ada dalam file .txt

1

Saya memiliki skrip batch (berdasarkan jawaban ini ):

@echo off
for /f "delims=" %%x in ('dir /b /s D:\v\*.*') do (
 echo %%x>>C:\Users\TechMadmin\Desktop\scripts\a.txt
)
move /y C:\Users\TechMadmin\Desktop\scripts\a.txt C:\Users\TechMadmin\Desktop\scripts\b.txt

Output dari kode batch adalah

D:\v\a.csv
D:\v\b.txt
D:\v\c.xml

Sekarang persyaratan saya adalah menambahkan timestamp yaitu: %date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%untuk menampilkan file.

Contoh: File output saya adalah D: \ v \ a.csv tetapi sekarang seharusnya

D:\v\a_%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%.csv
D:\v\b_%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
D:\v\c%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%.xml
pengguna3051956
sumber

Jawaban:

1

Persyaratan saya adalah menambahkan stempel waktu

Gunakan file batch berikut.

@echo off
set datetime=%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%
for /f "delims=" %%x in ('dir /b /s D:\v\*.*') do (
  echo %%~dpnx_%datetime%%%~xx>>C:\Users\TechMadmin\Desktop\scripts\a.txt
)
move /y C:\Users\TechMadmin\Desktop\scripts\a.txt C:\Users\TechMadmin\Desktop\scripts\b.txt

Catatan:

  • %%~dpnxadalah nama file lengkap, termasuk drive dan path, tetapi tidak termasuk ekstensi (contoh D:\v\a).
  • _ adalah karakter garis bawah.
  • %datetime% adalah nilai string waktu tanggal
  • %%~xxadalah ekstensi file (contoh .csv).
  • >> adalah operator pengalihan.

  • Tidak sepenuhnya diuji.

    Anda menggunakan fungsi dependen lokal untuk mendapatkan komponen tanggal (yang tidak cocok dengan format tanggal sistem saya)

    • Contoh sederhana berfungsi seperti yang diharapkan.

Jika Anda menginginkan solusi independen lokal untuk komponen tanggal dan waktu, lihat jawaban saya Cetak datetime di Windows cmd untuk kode yang diperlukan.


Bacaan lebih lanjut

DavidPostill
sumber
Bisakah Anda jelaskan apa fungsinya: %% ~ dpnx_% datetime %%% ~ xx >> dalam kode di atas.
user3051956
@ user3051956 Jawaban telah diperbarui. Lihat juga tautan bacaan lebih lanjut kedua ...
DavidPostill
Script di atas berjalan dengan sukses di akhir saya, saya perhatikan satu situasi di mana script gagal. Misalkan jika saya menerima file yang sama (a.txt, a.txt) pada hari yang sama dan setelah menambahkan stempel waktu ke sana ... kedua file tersebut terlihat seperti a_08042016_095244.txt a_08042016_095244.txt Kedua file ini dikirim ke alat ETL sebagai input di mana ia ditempatkan. gagal mengatakan duplikat file keluar. Bisakah Anda memberi tahu kami cara membedakan dua file ini untuk diproses. Salam, Venu.Ch
user3051956
@ user3051956 Hmm. Bagaimana Anda mendapatkan dua file yang dipanggil a.txtdi direktori yang sama di tempat pertama? Itu seharusnya tidak mungkin. Saya akan menyarankan menggunakan waktu pembuatan file sebagai cap waktu. Lihat jawaban saya Dapatkan waktu pembuatan file dalam milidetik untuk cara melakukannya.
DavidPostill
Apakah ada cara untuk menambahkan string tanggal waktu ke file dengan cara yang berbeda. Keluaran kode. D: \ v \ a_0805201616112099. . Tolong bantu di sini.
user3051956