diff --git a/CHANGES.md b/CHANGES.md
index 2324522f..c1686888 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -11,6 +11,7 @@ News
 * Enhancements
     * Added the ability to exclude commands from the help menu (**eof** included by default)
     * Redundant list command removed and features merged into history command
+    * Added **pyscript** command which supports running Python scripts with arguments
 
 0.7.2
 -----
diff --git a/README.md b/README.md
index cd739773..8c5141b6 100755
--- a/README.md
+++ b/README.md
@@ -155,8 +155,9 @@ example/exampleSession.txt:
 
 Documented commands (type help <topic>):
 ========================================
-_relative_load  edit  help     list  orate  py    run   say  shell      show
-cmdenvironment  eof   history  load  pause  quit  save  set  shortcuts  speak
+_relative_load  help     orate  pyscript  save  shell      speak
+cmdenvironment  history  pause  quit      say   shortcuts
+edit            load     py     run       set   show
 
 (Cmd) help say
 Repeats what you tell me to.
diff --git a/cmd2.py b/cmd2.py
index 3fe13f54..aabda96e 100755
--- a/cmd2.py
+++ b/cmd2.py
@@ -1583,6 +1583,42 @@ class Cmd(cmd.Cmd):
             self._in_py = False
         return self._should_quit
 
+    # noinspection PyUnusedLocal
+    @options([], arg_desc='<script_path> [script_arguments]')
+    def do_pyscript(self, arg, opts=None):
+        """\nRuns a python script file inside the console
+
+Console commands can be executed inside this script with cmd("your command")
+However, you cannot run nested "py" or "pyscript" commands from within this script
+Paths or arguments that contain spaces must be enclosed in quotes
+"""
+        if not arg:
+            self.perror("pyscript command requires at least 1 argument ...", traceback_war=False)
+            self.do_help('pyscript')
+            return
+
+        if not USE_ARG_LIST:
+            arg = shlex.split(arg, posix=POSIX_SHLEX)
+
+        # Get the absolute path of the script
+        script_path = os.path.abspath(os.path.expanduser(arg[0]))
+
+        # Save current command line arguments
+        orig_args = sys.argv
+
+        # Overwrite sys.argv to allow the script to take command line arguments
+        sys.argv = [script_path]
+        sys.argv.extend(arg[1:])
+
+        # Run the script
+        self.do_py("run('{}')".format(arg[0]))
+
+        # Restore command line arguments to original state
+        sys.argv = orig_args
+
+    # Enable tab completion of paths for pyscript command
+    complete_pyscript = path_complete
+
     # Only include the do_ipy() method if IPython is available on the system
     if ipython_available:
         # noinspection PyMethodMayBeStatic,PyUnusedLocal
diff --git a/examples/arg_printer.py b/examples/arg_printer.py
new file mode 100755
index 00000000..42084d4e
--- /dev/null
+++ b/examples/arg_printer.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python
+# coding=utf-8
+import sys
+print("Running Python script {!r} which was called with {} arguments".format(sys.argv[0], len(sys.argv) - 1))
+for i, arg in enumerate(sys.argv[1:]):
+    print("arg {}: {!r}".format(i+1, arg))
diff --git a/examples/exampleSession.txt b/examples/exampleSession.txt
index 62c130f0..b2cf24c0 100644
--- a/examples/exampleSession.txt
+++ b/examples/exampleSession.txt
@@ -3,8 +3,9 @@
 
 Documented commands (type help <topic>):
 ========================================
-_relative_load  edit  history  orate  py    run   say  shell      show
-cmdenvironment  help  load     pause  quit  save  set  shortcuts  speak
+_relative_load  help     orate  pyscript  save  shell      speak
+cmdenvironment  history  pause  quit      say   shortcuts
+edit            load     py     run       set   show
 
 (Cmd) help say
 Repeats what you tell me to.

Add ability to pass arguments to a Python script
The **py** command supports running a Python script via "py run('script.py')".  However, it does not currently support the ability to pass any arguments to the script.

This functionality would be a lot more flexible and reusable if arguments could be passed to the script.

So either either enhance the current py command with the ability to run a script with arguments or add a new command which supports the ability to run a script and pass it arguments.
diff --git a/tests/conftest.py b/tests/conftest.py
index 41bd007a..77f525f7 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -15,8 +15,8 @@ import cmd2
 # Help text for base cmd2.Cmd application
 BASE_HELP = """Documented commands (type help <topic>):
 ========================================
-_relative_load  edit  history  pause  quit  save  shell      show
-cmdenvironment  help  load     py     run   set   shortcuts
+_relative_load  edit  history  pause  pyscript  run   set    shortcuts
+cmdenvironment  help  load     py     quit      save  shell  show
 """
 
 # Help text for the history command
diff --git a/tests/test_transcript.py b/tests/test_transcript.py
index b193a20d..5ac7d6fd 100644
--- a/tests/test_transcript.py
+++ b/tests/test_transcript.py
@@ -106,8 +106,9 @@ def test_base_with_transcript(_cmdline_app):
 
 Documented commands (type help <topic>):
 ========================================
-_relative_load  edit  history  orate  py    run   say  shell      show
-cmdenvironment  help  load     pause  quit  save  set  shortcuts  speak
+_relative_load  help     orate  pyscript  save  shell      speak
+cmdenvironment  history  pause  quit      say   shortcuts
+edit            load     py     run       set   show
 
 (Cmd) help say
 Repeats what you tell me to.
diff --git a/tests/transcript.txt b/tests/transcript.txt
index d0fd86a6..582f08cb 100644
--- a/tests/transcript.txt
+++ b/tests/transcript.txt
@@ -2,8 +2,9 @@
 
 Documented commands (type help <topic>):
 ========================================
-_relative_load  edit  history  orate  py    run   say  shell      show
-cmdenvironment  help  load     pause  quit  save  set  shortcuts  speak
+_relative_load  help     orate  pyscript  save  shell      speak
+cmdenvironment  history  pause  quit      say   shortcuts
+edit            load     py     run       set   show
 
 (Cmd) help say
 Repeats what you tell me to.

pip install -e .
parse_log_pytest
requirements.txt
pytest mock sphinx sphinx-rtd-theme pytest-xdist pytest-cov
pip install tox
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.16
babel==2.17.0
cachetools==5.5.2
certifi==2025.1.31
chardet==5.2.0
charset-normalizer==3.4.1
-e git+https://github.com/python-cmd2/cmd2.git@0af8018cdce37e40719e3f6c4023e9525b1e69de#egg=cmd2
colorama==0.4.6
coverage==7.8.0
distlib==0.3.9
docutils==0.21.2
exceptiongroup==1.2.2
execnet==2.1.1
filelock==3.18.0
idna==3.10
imagesize==1.4.1
importlib_metadata==8.6.1
iniconfig==2.1.0
Jinja2==3.1.6
MarkupSafe==3.0.2
mock==5.2.0
packaging==24.2
platformdirs==4.3.7
pluggy==1.5.0
Pygments==2.19.1
pyparsing==3.2.3
pyproject-api==1.9.0
pytest==8.3.5
pytest-cov==6.0.0
pytest-xdist==3.6.1
requests==2.32.3
six==1.17.0
snowballstemmer==2.2.0
Sphinx==7.4.7
sphinx-rtd-theme==3.0.2
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
tomli==2.2.1
tox==4.25.0
typing_extensions==4.13.0
urllib3==2.3.0
virtualenv==20.29.3
zipp==3.21.0

name: cmd2
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.16
      - babel==2.17.0
      - cachetools==5.5.2
      - certifi==2025.1.31
      - chardet==5.2.0
      - charset-normalizer==3.4.1
      - colorama==0.4.6
      - coverage==7.8.0
      - distlib==0.3.9
      - docutils==0.21.2
      - exceptiongroup==1.2.2
      - execnet==2.1.1
      - filelock==3.18.0
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - jinja2==3.1.6
      - markupsafe==3.0.2
      - mock==5.2.0
      - packaging==24.2
      - platformdirs==4.3.7
      - pluggy==1.5.0
      - pygments==2.19.1
      - pyparsing==3.2.3
      - pyproject-api==1.9.0
      - pytest==8.3.5
      - pytest-cov==6.0.0
      - pytest-xdist==3.6.1
      - requests==2.32.3
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==7.4.7
      - sphinx-rtd-theme==3.0.2
      - sphinxcontrib-applehelp==2.0.0
      - sphinxcontrib-devhelp==2.0.0
      - sphinxcontrib-htmlhelp==2.1.0
      - sphinxcontrib-jquery==4.1
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==2.0.0
      - sphinxcontrib-serializinghtml==2.0.0
      - tomli==2.2.1
      - tox==4.25.0
      - typing-extensions==4.13.0
      - urllib3==2.3.0
      - virtualenv==20.29.3
      - zipp==3.21.0
prefix: /opt/conda/envs/cmd2

tests/test_transcript.py::test_base_with_transcript tests/test_transcript.py::test_transcript_from_cmdloop
tests/test_transcript.py::Cmd2TestCase::runTest tests/test_transcript.py::TestMyAppCase::runTest tests/test_transcript.py::test_optparser tests/test_transcript.py::test_optparser_nosuchoption tests/test_transcript.py::test_comment_stripping tests/test_transcript.py::test_optarser_correct_args_with_quotes_and_midline_options tests/test_transcript.py::test_optarser_options_with_spaces_in_quotes tests/test_transcript.py::test_commands_at_invocation tests/test_transcript.py::test_select_options tests/test_transcript.py::test_multiline_command_transcript_with_comments_at_beginning tests/test_transcript.py::test_invalid_syntax tests/test_transcript.py::test_regex_transcript
cmd2.py CHANGES.md examples/exampleSession.txt examples/arg_printer.py README.md
cmd2.py CHANGES.md examples/exampleSession.txt examples/arg_printer.py README.md