-
اجرای فایلهای دارای پسوند cmd در پروژه vb.net
سلام و عرض ارادت بر اساتید عزیز
بنده یک فایل cmd دارم که حاوی پیش فرضهای متنی است و با تغییر آن پیش فرض ها برنامه exe خاصی را هندل میکند پروژهای در vb.net ساختهام که محتویات فایل cmd را ویرایش میکند ولی نمیدانم چطور آن فایل cmd را از داخل پروژه با کلیک بر روی یک دکمه (باتن) اجرا کنم
سپاس از حضور اساتید گرامی در این سایت عالی
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
سلام.
بهتره بجای اون فایل cmd دستوراتش رو با تابع shell یا تابع Start از کلاس Process اجرا کنید.
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
ROSTAM2
سلام.
بهتره بجای اون فایل cmd دستوراتش رو با تابع shell یا تابع Start از کلاس Process اجرا کنید.
بلد نیستم دستورات داخل فایل cmd را به تابع shell بدهم کل متن داخلشو با عنوان مای کامنت خوندم دادم به شل ولی موفق نبود
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
saeidmobashery
بلد نیستم دستورات داخل فایل cmd را به تابع shell بدهم کل متن داخلشو با عنوان مای کامنت خوندم دادم به شل ولی موفق نبود
می شه همون cmd رو با shell اجرا کرد
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
ROSTAM2
می شه همون cmd رو با shell اجرا کرد
با چه کدی برادر جان ؟
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
Private Sub btnRunCMD_Click(sender As Object, e As EventArgs) Handles btnRunCMD.Click
Dim cmdPath As String = "C:\path\to\your\cmd\file.cmd" ' مسیر فایل cmd خود را در اینجا قرار دهید
Dim startInfo As New ProcessStartInfo()
startInfo.FileName = "cmd.exe"
startInfo.Arguments = "/C " & cmdPath ' استفاده از /C برای اجرای دستورات در cmd و بستن آن بعد از اجرا
startInfo.UseShellExecute = False ' تنظیم UseShellExecute به False برای اجرای cmd به صورت مستقیم
startInfo.RedirectStandardOutput = True ' تنظیم RedirectStandardOutput به True برای دریافت خروجی cmd
Dim process As New Process()
process.StartInfo = startInfo
process.Start()
' می توانید خروجی را دریافت کنید و انجام عملیات دیگر روی آن انجام دهید
Dim output As String = process.StandardOutput.ReadToEnd()
' اینجا خروجی را می توانید استفاده کنید یا نمایش دهید
MessageBox.Show(output)
End Sub
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
پرستو پارسایی
Private Sub btnRunCMD_Click(sender As Object, e As EventArgs) Handles btnRunCMD.Click
Dim cmdPath As String = "C:\path\to\your\cmd\file.cmd" ' مسیر فایل cmd خود را در اینجا قرار دهید
Dim startInfo As New ProcessStartInfo()
startInfo.FileName = "cmd.exe"
startInfo.Arguments = "/C " & cmdPath ' استفاده از /C برای اجرای دستورات در cmd و بستن آن بعد از اجرا
startInfo.UseShellExecute = False ' تنظیم UseShellExecute به False برای اجرای cmd به صورت مستقیم
startInfo.RedirectStandardOutput = True ' تنظیم RedirectStandardOutput به True برای دریافت خروجی cmd
Dim process As New Process()
process.StartInfo = startInfo
process.Start()
' می توانید خروجی را دریافت کنید و انجام عملیات دیگر روی آن انجام دهید
Dim output As String = process.StandardOutput.ReadToEnd()
' اینجا خروجی را می توانید استفاده کنید یا نمایش دهید
MessageBox.Show(output)
End Sub
سلام استاد عزیز و عرض ارادت
دقیق کد شما را پیاده سازی کردم ولی مسیج باکس خالیه و CMD که با اجرای خارج از پروژه فایل تکست خروجی میداد هیچ خروجی نشان نداد
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
saeidmobashery
سلام استاد عزیز و عرض ارادت
دقیق کد شما را پیاده سازی کردم ولی مسیج باکس خالیه و CMD که با اجرای خارج از پروژه فایل تکست خروجی میداد هیچ خروجی نشان نداد
حالا چرا cmd
دستوراتی ک نوشتی اینجا ارسال کن معادل Vb .net یا Script اون ایجاد بشه...
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
saeidmobashery
با چه کدی برادر جان ؟
Shell function (Visual Basic for Applications) | Microsoft Learn
' Specifying 1 as the second argument opens the application in
' normal size and gives it the focus.
Dim RetVal
RetVal = Shell("C:\WINDOWS\NOTEPAD.EXE", 1) ' Open Notepad.
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
ROSTAM2
حالا چرا cmd
دستوراتی ک نوشتی اینجا ارسال کن معادل Vb .net یا Script اون ایجاد بشه...
چشم برادر و سپاس از پیگیری شما
متن داخل فایل cmd :
@echo off
Exporter.exe "2" "2007-12-15" "2024-03-01" Dollar.txt 1234123454 ali1360
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
saeidmobashery
چشم برادر و سپاس از پیگیری شما
متن داخل فایل cmd :
@echo off
Exporter.exe "2" "2007-12-15" "2024-03-01" Dollar.txt 1234123454 ali1360
این فایل Exporter دقیقا چیه؟
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
از پست شاره 6 کدها رو استفاده کن
با این تغییرات
startInfo.FileName = "Exporter.exe"
startInfo.Arguments = "'2' '2007-12-15' '2024-03-01' Dollar.txt 1234123454 ali1360"
ولی اگر فایل Exporter.exe کنار نرم افزار نیست یا باید آدرس دقیق نوشته بشه یا در رجیستری ثبت بشه
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
ROSTAM2
از پست شاره 6 کدها رو استفاده کن
با این تغییرات
startInfo.FileName = "Exporter.exe"
startInfo.Arguments = "'2' '2007-12-15' '2024-03-01' Dollar.txt 1234123454 ali1360"
ولی اگر فایل Exporter.exe کنار نرم افزار نیست یا باید آدرس دقیق نوشته بشه یا در رجیستری ثبت بشه
برادر جان کد زیر را اعمال کردم :
Private Sub RunCMD_Button_Click(sender As Object, e As EventArgs) Handles RunCMD_Button.Click
Dim startInfo As New ProcessStartInfo()
startInfo.FileName = "Exporter.exe"
startInfo.Arguments = "'2' '2007-12-15' '2024-03-01' Dollar.txt 1234123454 ali1360"
startInfo.UseShellExecute = False
startInfo.RedirectStandardOutput = True
Dim process As New Process()
process.StartInfo = startInfo
process.Start()
Dim output As String = process.StandardOutput.ReadToEnd()
MessageBox.Show(output)
End Sub
خطای زیر به دست آمد :
System.ComponentModel.Win32Exception: 'The system cannot find the file specified'
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
saeidmobashery
برادر جان کد زیر را اعمال کردم :
Private Sub RunCMD_Button_Click(sender As Object, e As EventArgs) Handles RunCMD_Button.Click
Dim startInfo As New ProcessStartInfo()
startInfo.FileName = "Exporter.exe"
startInfo.Arguments = "'2' '2007-12-15' '2024-03-01' Dollar.txt 1234123454 ali1360"
startInfo.UseShellExecute = False
startInfo.RedirectStandardOutput = True
Dim process As New Process()
process.StartInfo = startInfo
process.Start()
Dim output As String = process.StandardOutput.ReadToEnd()
MessageBox.Show(output)
End Sub
خطای زیر به دست آمد :
System.ComponentModel.Win32Exception: 'The system cannot find the file specified'
برای FileName آدرس کامل استفاده کن.
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
ROSTAM2
برای FileName آدرس کامل استفاده کن.
مسیج باکس خالیه و CMD که با اجرای خارج از پروژه فایل تکست خروجی میداد هیچ خروجی نشان نداد
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
saeidmobashery
مسیج باکس خالیه و CMD که با اجرای خارج از پروژه فایل تکست خروجی میداد هیچ خروجی نشان نداد
از ویژگی Run As Administrator استفاده کنید
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
ROSTAM2
از ویژگی Run As Administrator استفاده کنید
بیشتر توضیح بدین ممنون میشم نمی دونم به چه صورتی انجام بدم
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
Dim processStartInfo As New ProcessStartInfo()
processStartInfo.FileName = "cmd.exe"
processStartInfo.Arguments = "/C @echo off & Exporter.exe ""2"" ""2007-12-15"" ""2024-03-01"" Dollar.txt 1234123454 ali136" ' دستور مورد نظر خود را اینجا قرار دهید
processStartInfo.Verb = "runas" ' تنظیم دسترسی مدیریتی
Process.Start(processStartInfo)
مطمئن شوید که مسیر فایل cmd و همچنین پارامترهای دستور را به درستی وارد کردهاید.
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
عرض سلام و احترام خدمت دوستان و اساتید عزیز
بنده موفق شدم cmd را باز کنم و برنامه مد نظرم را با کامنتهای ورودی مخصوصش به کمک کدهای قبلی مندرج در این تاپیک ران کنم و سپاس از راهنمایی دوستان
اکنون مشکل جدیدی دارم :
پنجره cmd که باز میشود را بلد نیستم ببندم
از دستور زیر کمک میگیرم ولی گویا زودتر از اینکه پردازش تمام شود cmd را میبندد
process.CloseMainWindow()
در واقع به دنبال دستوری هستم که متوجه شود برنامه cmd کارش تمام شده و اگر بسته نشده آن را ببندد
این اگرش خیلی مهم است چون در مواردی نادر پنجره بسته cmd بعد از پایان کار بسته میشود
ممنون میشوم راهنمایی بفرمایید
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
هنگام کلیک بر روی دکمه "Start"، یک فرآیند جدید cmd.exe ایجاد میشود و دستورات مورد نظر شما اجرا میشن. سپس با استفاده از متد WaitForExit()، صبر میکنیم تا پردازش کامل بشه و پنجره cmd بسته شود. در صورتی که بخواهید پنجره cmd را در هر زمانی ببندید، میتوانید از متد Kill() استفاده کنید.
Imports System.Diagnostics
Public Class Form1
Dim cmdProcess As Process
Private Sub StartButton_Click(sender As Object, e As EventArgs) Handles StartButton.Click
cmdProcess = New Process()
Dim startInfo As New ProcessStartInfo("cmd.exe")
cmdProcess.StartInfo = startInfo
cmdProcess.Start()
' اجرای دستورات مورد نظر
' منتظر بمانید تا پردازش کامل شود و پنجره cmd بسته شود
cmdProcess.WaitForExit()
End Sub
Private Sub StopButton_Click(sender As Object, e As EventArgs) Handles StopButton.Click
If cmdProcess IsNot Nothing AndAlso Not cmdProcess.HasExited Then
' بستن پنجره cmd به صورت اجباری (Forcefully)
cmdProcess.Kill()
End If
End Sub
End Class
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
پرستو پارسایی
هنگام کلیک بر روی دکمه "Start"، یک فرآیند جدید cmd.exe ایجاد میشود و دستورات مورد نظر شما اجرا میشن. سپس با استفاده از متد WaitForExit()، صبر میکنیم تا پردازش کامل بشه و پنجره cmd بسته شود. در صورتی که بخواهید پنجره cmd را در هر زمانی ببندید، میتوانید از متد Kill() استفاده کنید.
Imports System.Diagnostics
Public Class Form1
Dim cmdProcess As Process
Private Sub StartButton_Click(sender As Object, e As EventArgs) Handles StartButton.Click
cmdProcess = New Process()
Dim startInfo As New ProcessStartInfo("cmd.exe")
cmdProcess.StartInfo = startInfo
cmdProcess.Start()
' اجرای دستورات مورد نظر
' منتظر بمانید تا پردازش کامل شود و پنجره cmd بسته شود
cmdProcess.WaitForExit()
End Sub
Private Sub StopButton_Click(sender As Object, e As EventArgs) Handles StopButton.Click
If cmdProcess IsNot Nothing AndAlso Not cmdProcess.HasExited Then
' بستن پنجره cmd به صورت اجباری (Forcefully)
cmdProcess.Kill()
End If
End Sub
End Class
استاد عزیز کد WaitForExit() را استفاده کردم حالا تا زمانی که cmd بسته نشود عملیات وی بی تکمیل نمیشود
cmd پایان پردازش را اعلام میکند و برای بسته شدن اینتر نیاز دارد
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
Imports System.Diagnostics
Public Class Form1
Dim cmdProcess As Process
Private Sub StartButton_Click(sender As Object, e As EventArgs) Handles StartButton.Click
cmdProcess = New Process()
Dim startInfo As New ProcessStartInfo("cmd.exe")
cmdProcess.StartInfo = startInfo
' اضافه کردن رویداد بسته شدن به Process
AddHandler cmdProcess.Exited, AddressOf cmdProcess_Exited
cmdProcess.Start()
End Sub
Private Sub StopButton_Click(sender As Object, e As EventArgs) Handles StopButton.Click
If cmdProcess IsNot Nothing AndAlso Not cmdProcess.HasExited Then
cmdProcess.Kill()
End If
End Sub
Private Sub cmdProcess_Exited(sender As Object, e As EventArgs)
' عملیات را به پایان برسانید
End Sub
End Class
یک رویداد Exited به Process اضافه کردم. این رویداد هنگامی فراخوانی میشود که cmd بسته بشه. شما میتونید کدهای مربوط به پایان عملیات را در داخل رویداد cmdProcess_Exited قرار دهید.
-
نقل قول: اجرای فایلهای دارای پسوند cmd در پروژه vb.net
نقل قول:
نوشته شده توسط
پرستو پارسایی
Imports System.Diagnostics
Public Class Form1
Dim cmdProcess As Process
Private Sub StartButton_Click(sender As Object, e As EventArgs) Handles StartButton.Click
cmdProcess = New Process()
Dim startInfo As New ProcessStartInfo("cmd.exe")
cmdProcess.StartInfo = startInfo
' اضافه کردن رویداد بسته شدن به Process
AddHandler cmdProcess.Exited, AddressOf cmdProcess_Exited
cmdProcess.Start()
End Sub
Private Sub StopButton_Click(sender As Object, e As EventArgs) Handles StopButton.Click
If cmdProcess IsNot Nothing AndAlso Not cmdProcess.HasExited Then
cmdProcess.Kill()
End If
End Sub
Private Sub cmdProcess_Exited(sender As Object, e As EventArgs)
' عملیات را به پایان برسانید
End Sub
End Class
یک رویداد Exited به Process اضافه کردم. این رویداد هنگامی فراخوانی میشود که cmd بسته بشه. شما میتونید کدهای مربوط به پایان عملیات را در داخل رویداد cmdProcess_Exited قرار دهید.
سپاس از زحمات سرکار خانم پارسایی ، بالاخره امشب موفق شدم