मेरे पास कुछ ऑडियो, वीडियो और जेपीजी फाइलें हैं। मैं सभी अवधि प्राप्त करने के लिए ffmpeg का उपयोग कर रहा हूँ

सब कुछ सही काम करता है, मुझे लूप के लिए सभी अवधि मिल गई है और इसे एक चर पर सेट किया गया है, जब मैं इसे गूंजता हूं, तो यह पूरी तरह से काम करता है, लेकिन जब मैं इसे एक .txt फ़ाइल में आउटपुट करता हूं तो यह केवल अंतिम लूप को प्रिंट करता है नीचे कोई सुझाव है मेरा कोड

$file = "D:\edl\input\aa.xlsx"
  $sheetName = "Sheet1"
  #Create an instance of Excel.Application and Open Excel file
  $objExcel = New-Object -ComObject Excel.Application
  $workbook = $objExcel.Workbooks.Open($file)
  $sheet = $workbook.Worksheets.Item($sheetName)
  $objExcel.Visible=$false
  #Count max row
  $rowMax = ($sheet.UsedRange.Rows).count
  #Declare the starting positions
  $rowName,$colName = 1,1
  $rowAge,$colAge = 1,2
  $rowCity,$colCity = 1,3
  $rowMessage,$colMessage = 1,9
  #loop to get values and store it
  for ($i=0; $i -le $rowMax-1; $i++)
  {
  $id = $sheet.Cells.Item($rowName+$i,$colName).text
  $name = $sheet.Cells.Item($rowAge+$i,$colAge).text
  $subtitle = $sheet.Cells.Item($rowCity+$i,$colCity).text
$filename2 = "$id.jpg"
$filename = "$id.mp4"
$filename1 = "$id.m4a"
$duration2 = if ((ffmpeg -i $filename2 2>&1 | Out-String) -match 'Duration:\s+([\d:.]+)') { $matches[1] };
$duration1 = if ((ffmpeg -i $filename1 2>&1 | Out-String) -match 'Duration:\s+([\d:.]+)') { $matches[1] };
$duration = if ((ffmpeg -i $filename 2>&1 | Out-String) -match 'Duration:\s+([\d:.]+)') { $matches[1] };
if($duration2){
$duration2 = "02:00:11:15"
$bb = $duration2
$out = "$i" + "  " + "AX" + "   " + "V" + "      " + "C" + "   " + "00:00:00:00" + " " + $bb + "   "+ "* FROM CLIP NAME: " + $id+".jpg"
}
if($duration1){

$out1 = "$i"+ "  " + "AX"  + "   " + "AA" + "     " + "C" + "   " + "00:00:00:00" + " " + $duration1 + "   " + "* FROM CLIP NAME: " + $id+".m4a"
}
if(!$duration){
}else{
$out2 = "$i" + "  " + "AX" + "   " + "AA/V" + "   " + "C" + "   " + "00:00:00:00" + " " + $duration + "   "+ "* FROM CLIP NAME: " + $id+".mp4"
}

$gg = $out+"`n"+"`n"+$out1+"`n"+"`n"+$out2+"`n"
echo $gg
$gg | Out-File -FilePath d:\edl\input\output.txt

  }

  #close excel file
  $objExcel.quit()

जब मैं प्रतिध्वनि चर $gg
यह आउटपुट है

0  AX   V      C   00:00:00:00 02:00:11:15   * FROM CLIP NAME: 1aef53e6-92ac-4d28-89f8-4cce28fa0f58.jpg

0  AX   AA     C   00:00:00:00 00:00:03.48   * FROM CLIP NAME: 1aef53e6-92ac-4d28-89f8-4cce28fa0f58.m4a

0  AX   AA/V   C   00:00:00:00 00:00:07.64   * FROM CLIP NAME: 1aef53e6-92ac-4d28-89f8-4cce28fa0f58.mp4

1  AX   V      C   00:00:00:00 02:00:11:15   * FROM CLIP NAME: 9a52a954-ffe9-4420-a701-68988923f81f.jpg

1  AX   AA     C   00:00:00:00 00:00:03.46   * FROM CLIP NAME: 9a52a954-ffe9-4420-a701-68988923f81f.m4a

0  AX   AA/V   C   00:00:00:00 00:00:07.64   * FROM CLIP NAME: 1aef53e6-92ac-4d28-89f8-4cce28fa0f58.mp4

2  AX   V      C   00:00:00:00 02:00:11:15   * FROM CLIP NAME: 20b92847-72eb-455d-98ce-6661ed52951e.jpg

2  AX   AA     C   00:00:00:00 00:00:03.52   * FROM CLIP NAME: 20b92847-72eb-455d-98ce-6661ed52951e.m4a

2  AX   AA/V   C   00:00:00:00 00:00:09.75   * FROM CLIP NAME: 20b92847-72eb-455d-98ce-6661ed52951e.mp4

3  AX   V      C   00:00:00:00 02:00:11:15   * FROM CLIP NAME: 73aa1f8e-1067-4efd-b2bd-6748a088f33a.jpg

3  AX   AA     C   00:00:00:00 00:00:03.21   * FROM CLIP NAME: 73aa1f8e-1067-4efd-b2bd-6748a088f33a.m4a

2  AX   AA/V   C   00:00:00:00 00:00:09.75   * FROM CLIP NAME: 20b92847-72eb-455d-98ce-6661ed52951e.mp4

4  AX   V      C   00:00:00:00 02:00:11:15   * FROM CLIP NAME: 1877c551-ceef-48e9-a1a5-00629a9964eb.jpg

4  AX   AA     C   00:00:00:00 00:00:03.05   * FROM CLIP NAME: 1877c551-ceef-48e9-a1a5-00629a9964eb.m4a

4  AX   AA/V   C   00:00:00:00 00:00:06.93   * FROM CLIP NAME: 1877c551-ceef-48e9-a1a5-00629a9964eb.mp4

लेकिन मेरी txt फ़ाइल आउटपुट

4  AX   V      C   00:00:00:00 02:00:11:15   * FROM CLIP NAME: 1877c551-ceef-48e9-a1a5-00629a9964eb.jpg

4  AX   AA     C   00:00:00:00 00:00:03.05   * FROM CLIP NAME: 1877c551-ceef-48e9-a1a5-00629a9964eb.m4a

4  AX   AA/V   C   00:00:00:00 00:00:06.93   * FROM CLIP NAME: 1877c551-ceef-48e9-a1a5-00629a9964eb.mp4

1
ilham zacky 15 अप्रैल 2020, 23:29

1 उत्तर

सबसे बढ़िया उत्तर

डिफ़ॉल्ट रूप से, यदि कोई फ़ाइल निर्दिष्ट पथ में मौजूद है, तो Out-File फ़ाइल को अधिलेखित कर देता है बिना किसी चेतावनी के। -Append पैरामीटर (किसी मौजूदा फ़ाइल के अंत में आउटपुट जोड़ता है):

$gg | Out-File -FilePath d:\edl\input\output.txt -Append

BTW, के विकल्प के रूप में

echo $gg
$gg | Out-File -FilePath d:\edl\input\output.txt -Append

Tee-Object cmdlet (यह आउटपुट को एक फाइल या वेरिएबल में स्टोर करता है और इसे पाइपलाइन में भी भेजता है। यदि Tee-Object पाइपलाइन में अंतिम कमांड है, तो कमांड आउटपुट प्रॉम्प्ट पर प्रदर्शित होता है):

$gg | Tee-Object -FilePath d:\edl\input\output.txt -Append
1
JosefZ 15 अप्रैल 2020, 21:06